package org.stragma.symbian.apply.stratego;

import org.strategoxt.stratego_lib.*;
import org.strategoxt.stratego_lib.*;
import org.strategoxt.lang.*;
import org.spoofax.interpreter.terms.*;
import static org.strategoxt.lang.Term.*;
import org.spoofax.interpreter.library.AbstractPrimitive;
import java.util.ArrayList;
import java.lang.ref.WeakReference;

@SuppressWarnings("all") public class Image_matrix  
{ 
  protected static final boolean TRACES_ENABLED = true;

  protected static ITermFactory constantFactory;

  private static WeakReference<Context> initedContext;

  private static boolean isIniting;

  protected static IStrategoTerm constCons34;

  protected static IStrategoTerm const71;

  protected static IStrategoTerm constAdd5;

  protected static IStrategoTerm constMul1;

  protected static IStrategoTerm constStatements1;

  protected static IStrategoTerm constCons33;

  protected static IStrategoTerm constAssign3;

  protected static IStrategoTerm constStatements0;

  protected static IStrategoTerm constCons32;

  protected static IStrategoTerm constAssign2;

  protected static IStrategoTerm constAdd4;

  protected static IStrategoTerm constAdd3;

  protected static IStrategoTerm constNone0;

  protected static IStrategoTerm constCons31;

  protected static IStrategoTerm constAssign1;

  protected static IStrategoTerm const70;

  protected static IStrategoTerm constComma1;

  protected static IStrategoTerm constCAssign5;

  protected static IStrategoTerm constAdd2;

  protected static IStrategoTerm constLt2;

  protected static IStrategoTerm constComma0;

  protected static IStrategoTerm constCAssign4;

  protected static IStrategoTerm constCAssign3;

  protected static IStrategoTerm constAdd1;

  protected static IStrategoTerm constLt1;

  protected static IStrategoTerm constCAssign2;

  protected static IStrategoTerm constAssign0;

  protected static IStrategoTerm constMul0;

  protected static IStrategoTerm constCAssign1;

  protected static IStrategoTerm constAdd0;

  protected static IStrategoTerm constLt0;

  protected static IStrategoTerm constCAssign0;

  protected static IStrategoTerm constAssert1;

  protected static IStrategoTerm constAnd1;

  protected static IStrategoTerm constLeq1;

  protected static IStrategoTerm constGeq1;

  protected static IStrategoTerm constAssert0;

  protected static IStrategoTerm constAnd0;

  protected static IStrategoTerm constLeq0;

  protected static IStrategoTerm constGeq0;

  protected static IStrategoTerm constSub1;

  protected static IStrategoTerm constSub0;

  protected static IStrategoTerm constInt2;

  protected static IStrategoTerm const69;

  protected static IStrategoTerm constInt1;

  protected static IStrategoTerm const68;

  protected static IStrategoTerm const67;

  protected static IStrategoTerm const66;

  protected static IStrategoTerm constVar8;

  protected static IStrategoTerm const65;

  protected static IStrategoTerm constVar7;

  protected static IStrategoTerm const64;

  protected static IStrategoTerm constDeclarations1;

  protected static IStrategoTerm constArguments1;

  protected static IStrategoTerm constCons30;

  protected static IStrategoTerm constIn1;

  protected static IStrategoTerm constFunctionPtr0;

  protected static IStrategoTerm constVarList2;

  protected static IStrategoTerm constCons29;

  protected static IStrategoTerm constVar6;

  protected static IStrategoTerm const63;

  protected static IStrategoTerm constCons28;

  protected static IStrategoTerm const62;

  protected static IStrategoTerm constCons27;

  protected static IStrategoTerm const61;

  protected static IStrategoTerm const60;

  protected static IStrategoTerm constCons26;

  protected static IStrategoTerm constDeclarations0;

  protected static IStrategoTerm constCons25;

  protected static IStrategoTerm constDeclaration0;

  protected static IStrategoTerm constVarList1;

  protected static IStrategoTerm constCons24;

  protected static IStrategoTerm constVar5;

  protected static IStrategoTerm const59;

  protected static IStrategoTerm constCons23;

  protected static IStrategoTerm constVar4;

  protected static IStrategoTerm const58;

  protected static IStrategoTerm constCons22;

  protected static IStrategoTerm constVar3;

  protected static IStrategoTerm const57;

  protected static IStrategoTerm constCons21;

  protected static IStrategoTerm constVar2;

  protected static IStrategoTerm const56;

  protected static IStrategoTerm constCons20;

  protected static IStrategoTerm constArguments0;

  protected static IStrategoTerm constCons19;

  protected static IStrategoTerm constIn0;

  protected static IStrategoTerm constType0;

  protected static IStrategoTerm constInteger0;

  protected static IStrategoTerm constVarList0;

  protected static IStrategoTerm constCons18;

  protected static IStrategoTerm constVar1;

  protected static IStrategoTerm const55;

  protected static IStrategoTerm constCons17;

  protected static IStrategoTerm constVar0;

  protected static IStrategoTerm const54;

  protected static IStrategoTerm constCons16;

  protected static IStrategoTerm constInt0;

  protected static IStrategoTerm const53;

  protected static IStrategoTerm const52;

  protected static IStrategoTerm constCons15;

  protected static IStrategoTerm constCons14;

  protected static IStrategoTerm constCons13;

  protected static IStrategoTerm constCons12;

  protected static IStrategoTerm constCons11;

  protected static IStrategoTerm constCons10;

  protected static IStrategoTerm constCons9;

  protected static IStrategoTerm constCons8;

  protected static IStrategoTerm constCons7;

  protected static IStrategoTerm constCons6;

  protected static IStrategoTerm constCons5;

  protected static IStrategoTerm constCons4;

  protected static IStrategoTerm constCons3;

  protected static IStrategoTerm constCons2;

  protected static IStrategoTerm constCons1;

  protected static IStrategoTerm constCons0;

  protected static IStrategoTerm constNil0;

  protected static IStrategoTerm const51;

  protected static IStrategoTerm constNo_use_apply_assertions0;

  protected static IStrategoTerm const50;

  protected static IStrategoTerm constNo_use_program_assertions0;

  protected static IStrategoTerm const49;

  protected static IStrategoTerm constNo_generate_loop_assertions0;

  protected static IStrategoTerm const48;

  protected static IStrategoTerm constNo_generate_if_assertions0;

  protected static IStrategoTerm const47;

  protected static IStrategoTerm constNo_normalise_expressions0;

  protected static IStrategoTerm const46;

  protected static IStrategoTerm constNo_propagate_constant_assignments0;

  protected static IStrategoTerm const45;

  protected static IStrategoTerm constNo_evaluate_constant_expressions0;

  protected static IStrategoTerm const44;

  protected static IStrategoTerm const43;

  protected static IStrategoTerm constMerge_complex_multiply0;

  protected static IStrategoTerm const42;

  protected static IStrategoTerm const41;

  protected static IStrategoTerm constUse_apply_assertions0;

  protected static IStrategoTerm const40;

  protected static IStrategoTerm const39;

  protected static IStrategoTerm constUse_program_assertions0;

  protected static IStrategoTerm const38;

  protected static IStrategoTerm const37;

  protected static IStrategoTerm constGenerate_loop_assertions0;

  protected static IStrategoTerm const36;

  protected static IStrategoTerm const35;

  protected static IStrategoTerm constGenerate_if_assertions0;

  protected static IStrategoTerm const34;

  protected static IStrategoTerm const33;

  protected static IStrategoTerm constPropagate_constant_assignments0;

  protected static IStrategoTerm const32;

  protected static IStrategoTerm const31;

  protected static IStrategoTerm constNormalise_expressions0;

  protected static IStrategoTerm const30;

  protected static IStrategoTerm const29;

  protected static IStrategoTerm constEvaluate_constant_expressions0;

  protected static IStrategoTerm const28;

  protected static IStrategoTerm const27;

  protected static IStrategoTerm constOptimise_20;

  protected static IStrategoTerm const26;

  protected static IStrategoTerm const25;

  protected static IStrategoTerm constOptimise_10;

  protected static IStrategoTerm const24;

  protected static IStrategoTerm const23;

  protected static IStrategoTerm constOptimise_00;

  protected static IStrategoTerm const22;

  protected static IStrategoTerm const21;

  protected static IStrategoTerm constWidth_5120;

  protected static IStrategoTerm const20;

  protected static IStrategoTerm const19;

  protected static IStrategoTerm constLoop_nosingle0;

  protected static IStrategoTerm const18;

  protected static IStrategoTerm const17;

  protected static IStrategoTerm constLoop_raster0;

  protected static IStrategoTerm const16;

  protected static IStrategoTerm const15;

  protected static IStrategoTerm constLoop_block0;

  protected static IStrategoTerm const14;

  protected static IStrategoTerm const13;

  protected static IStrategoTerm constLoop_index0;

  protected static IStrategoTerm const12;

  protected static IStrategoTerm const11;

  protected static IStrategoTerm constLoop_noindex0;

  protected static IStrategoTerm const10;

  protected static IStrategoTerm const9;

  protected static IStrategoTerm constLoop_100;

  protected static IStrategoTerm const8;

  protected static IStrategoTerm const7;

  protected static IStrategoTerm constLoop_20;

  protected static IStrategoTerm const6;

  protected static IStrategoTerm const5;

  protected static IStrategoTerm constLoop_10;

  protected static IStrategoTerm const4;

  protected static IStrategoTerm const3;

  protected static IStrategoTerm constTest0;

  protected static IStrategoTerm const2;

  protected static IStrategoTerm const1;

  protected static IStrategoTerm constTrue0;

  protected static IStrategoTerm constSimple0;

  protected static IStrategoTerm const0;

  public static IStrategoConstructor _consConc_2;

  public static IStrategoConstructor _consSome_1;

  protected static IStrategoConstructor _consNone_0;

  public static IStrategoConstructor _consTrue_0;

  public static IStrategoConstructor _consInt_1;

  public static IStrategoConstructor _consMul_2;

  public static IStrategoConstructor _consAdd_2;

  public static IStrategoConstructor _consSub_2;

  public static IStrategoConstructor _consNeg_1;

  public static IStrategoConstructor _consLt_2;

  public static IStrategoConstructor _consGt_2;

  public static IStrategoConstructor _consLeq_2;

  public static IStrategoConstructor _consGeq_2;

  public static IStrategoConstructor _consEqu_2;

  public static IStrategoConstructor _consAnd_2;

  public static IStrategoConstructor _consComma_2;

  public static IStrategoConstructor _consDefined_3;

  public static IStrategoConstructor _consIfElseExp_3;

  public static IStrategoConstructor _consCAssign_2;

  public static IStrategoConstructor _consRange_2;

  public static IStrategoConstructor _consVar_1;

  public static IStrategoConstructor _consFunc_2;

  public static IStrategoConstructor _consModule_1;

  public static IStrategoConstructor _consProcedure_5;

  public static IStrategoConstructor _consArguments_1;

  public static IStrategoConstructor _consIn_2;

  public static IStrategoConstructor _consWindowArray_3;

  public static IStrategoConstructor _consWindow_1;

  public static IStrategoConstructor _consType_1;

  public static IStrategoConstructor _consFunctionPtr_0;

  public static IStrategoConstructor _consArray_2;

  public static IStrategoConstructor _consInteger_0;

  public static IStrategoConstructor _consBorder_2;

  public static IStrategoConstructor _consDeclarations_1;

  public static IStrategoConstructor _consDeclaration_2;

  public static IStrategoConstructor _consVarList_1;

  public static IStrategoConstructor _consStatements_1;

  public static IStrategoConstructor _consAssign_2;

  public static IStrategoConstructor _consIfElse_3;

  public static IStrategoConstructor _consFor_4;

  public static IStrategoConstructor _consAssert_1;

  public static IStrategoConstructor _consApplyLoop_6;

  public static IStrategoConstructor _consCFor_4;

  public static IStrategoConstructor _consRowColumn_0;

  public static IStrategoConstructor _consIndex_0;

  public static IStrategoConstructor _consSubscript_2;

  public static IStrategoConstructor _consWindowAccessElement_7;

  public static IStrategoConstructor _consWindowAccessScalar_3;

  public static IStrategoConstructor _consWidth_512_0;

  public static IStrategoConstructor _consLoop_nosingle_0;

  public static IStrategoConstructor _consLoop_noindex_0;

  public static IStrategoConstructor _consLoop_index_0;

  public static IStrategoConstructor _consLoop_raster_0;

  public static IStrategoConstructor _consLoop_block_0;

  public static IStrategoConstructor _consLoop_10_0;

  public static IStrategoConstructor _consLoop_2_0;

  public static IStrategoConstructor _consLoop_1_0;

  public static IStrategoConstructor _consTest_0;

  public static IStrategoConstructor _consSimple_0;

  public static IStrategoConstructor _consOptimise_0_0;

  public static IStrategoConstructor _consOptimise_1_0;

  public static IStrategoConstructor _consOptimise_2_0;

  public static IStrategoConstructor _consNo_use_apply_assertions_0;

  public static IStrategoConstructor _consNo_use_program_assertions_0;

  public static IStrategoConstructor _consNo_generate_loop_assertions_0;

  public static IStrategoConstructor _consNo_generate_if_assertions_0;

  public static IStrategoConstructor _consNo_normalise_expressions_0;

  public static IStrategoConstructor _consNo_propagate_constant_assignments_0;

  public static IStrategoConstructor _consNo_evaluate_constant_expressions_0;

  public static IStrategoConstructor _consMerge_complex_multiply_0;

  public static IStrategoConstructor _consUse_apply_assertions_0;

  public static IStrategoConstructor _consUse_program_assertions_0;

  public static IStrategoConstructor _consGenerate_loop_assertions_0;

  public static IStrategoConstructor _consGenerate_if_assertions_0;

  public static IStrategoConstructor _consNormalise_expressions_0;

  public static IStrategoConstructor _consPropagate_constant_assignments_0;

  public static IStrategoConstructor _consEvaluate_constant_expressions_0;

  public static Context init(Context context)
  { 
    synchronized(Image_matrix.class)
    { 
      if(isIniting)
        return null;
      try
      { 
        isIniting = true;
        ITermFactory termFactory = context.getFactory();
        if(constantFactory == null)
        { 
          initConstructors(termFactory);
          initConstants(termFactory);
        }
        if(initedContext == null || initedContext.get() != context)
        { 
          org.strategoxt.stratego_lib.Main.init(context);
          org.strategoxt.stratego_lib.Main.init(context);
          context.registerComponent("Image_matrix");
        }
        initedContext = new WeakReference<Context>(context);
        constantFactory = termFactory;
      }
      finally
      { 
        isIniting = false;
      }
      return context;
    }
  }

  public static Context init()
  { 
    return init(new Context());
  }

  public static void main(String args[])
  { 
    Context context = init();
    context.setStandAlone(true);
    try
    { 
      IStrategoTerm result;
      try
      { 
        result = context.invokeStrategyCLI(io_$Image__matrix_0_0.instance, "Image_matrix", args);
      }
      finally
      { 
        context.getIOAgent().closeAllFiles();
      }
      if(result == null)
      { 
        System.err.println("Image_matrix" + (TRACES_ENABLED ? ": rewriting failed, trace:" : ": rewriting failed"));
        context.printStackTrace();
        context.setStandAlone(false);
        System.exit(1);
      }
      else
      { 
        System.out.println(result);
        context.setStandAlone(false);
        System.exit(0);
      }
    }
    catch(StrategoExit exit)
    { 
      context.setStandAlone(false);
      System.exit(exit.getValue());
    }
  }

  public static IStrategoTerm mainNoExit(String ... args) throws StrategoExit
  { 
    return mainNoExit(new Context(), args);
  }

  public static IStrategoTerm mainNoExit(Context context, String ... args) throws StrategoExit
  { 
    try
    { 
      init(context);
      return context.invokeStrategyCLI(io_$Image__matrix_0_0.instance, "Image_matrix", args);
    }
    finally
    { 
      context.getIOAgent().closeAllFiles();
    }
  }

  public static Strategy getMainStrategy()
  { 
    return io_$Image__matrix_0_0.instance;
  }

  public static void initConstructors(ITermFactory termFactory)
  { 
    _consConc_2 = termFactory.makeConstructor("Conc", 2);
    _consSome_1 = termFactory.makeConstructor("Some", 1);
    _consNone_0 = termFactory.makeConstructor("None", 0);
    _consTrue_0 = termFactory.makeConstructor("True", 0);
    _consInt_1 = termFactory.makeConstructor("Int", 1);
    _consMul_2 = termFactory.makeConstructor("Mul", 2);
    _consAdd_2 = termFactory.makeConstructor("Add", 2);
    _consSub_2 = termFactory.makeConstructor("Sub", 2);
    _consNeg_1 = termFactory.makeConstructor("Neg", 1);
    _consLt_2 = termFactory.makeConstructor("Lt", 2);
    _consGt_2 = termFactory.makeConstructor("Gt", 2);
    _consLeq_2 = termFactory.makeConstructor("Leq", 2);
    _consGeq_2 = termFactory.makeConstructor("Geq", 2);
    _consEqu_2 = termFactory.makeConstructor("Equ", 2);
    _consAnd_2 = termFactory.makeConstructor("And", 2);
    _consComma_2 = termFactory.makeConstructor("Comma", 2);
    _consDefined_3 = termFactory.makeConstructor("Defined", 3);
    _consIfElseExp_3 = termFactory.makeConstructor("IfElseExp", 3);
    _consCAssign_2 = termFactory.makeConstructor("CAssign", 2);
    _consRange_2 = termFactory.makeConstructor("Range", 2);
    _consVar_1 = termFactory.makeConstructor("Var", 1);
    _consFunc_2 = termFactory.makeConstructor("Func", 2);
    _consModule_1 = termFactory.makeConstructor("Module", 1);
    _consProcedure_5 = termFactory.makeConstructor("Procedure", 5);
    _consArguments_1 = termFactory.makeConstructor("Arguments", 1);
    _consIn_2 = termFactory.makeConstructor("In", 2);
    _consWindowArray_3 = termFactory.makeConstructor("WindowArray", 3);
    _consWindow_1 = termFactory.makeConstructor("Window", 1);
    _consType_1 = termFactory.makeConstructor("Type", 1);
    _consFunctionPtr_0 = termFactory.makeConstructor("FunctionPtr", 0);
    _consArray_2 = termFactory.makeConstructor("Array", 2);
    _consInteger_0 = termFactory.makeConstructor("Integer", 0);
    _consBorder_2 = termFactory.makeConstructor("Border", 2);
    _consDeclarations_1 = termFactory.makeConstructor("Declarations", 1);
    _consDeclaration_2 = termFactory.makeConstructor("Declaration", 2);
    _consVarList_1 = termFactory.makeConstructor("VarList", 1);
    _consStatements_1 = termFactory.makeConstructor("Statements", 1);
    _consAssign_2 = termFactory.makeConstructor("Assign", 2);
    _consIfElse_3 = termFactory.makeConstructor("IfElse", 3);
    _consFor_4 = termFactory.makeConstructor("For", 4);
    _consAssert_1 = termFactory.makeConstructor("Assert", 1);
    _consApplyLoop_6 = termFactory.makeConstructor("ApplyLoop", 6);
    _consCFor_4 = termFactory.makeConstructor("CFor", 4);
    _consRowColumn_0 = termFactory.makeConstructor("RowColumn", 0);
    _consIndex_0 = termFactory.makeConstructor("Index", 0);
    _consSubscript_2 = termFactory.makeConstructor("Subscript", 2);
    _consWindowAccessElement_7 = termFactory.makeConstructor("WindowAccessElement", 7);
    _consWindowAccessScalar_3 = termFactory.makeConstructor("WindowAccessScalar", 3);
    _consWidth_512_0 = termFactory.makeConstructor("Width-512", 0);
    _consLoop_nosingle_0 = termFactory.makeConstructor("Loop-nosingle", 0);
    _consLoop_noindex_0 = termFactory.makeConstructor("Loop-noindex", 0);
    _consLoop_index_0 = termFactory.makeConstructor("Loop-index", 0);
    _consLoop_raster_0 = termFactory.makeConstructor("Loop-raster", 0);
    _consLoop_block_0 = termFactory.makeConstructor("Loop-block", 0);
    _consLoop_10_0 = termFactory.makeConstructor("Loop-10", 0);
    _consLoop_2_0 = termFactory.makeConstructor("Loop-2", 0);
    _consLoop_1_0 = termFactory.makeConstructor("Loop-1", 0);
    _consTest_0 = termFactory.makeConstructor("Test", 0);
    _consSimple_0 = termFactory.makeConstructor("Simple", 0);
    _consOptimise_0_0 = termFactory.makeConstructor("Optimise-0", 0);
    _consOptimise_1_0 = termFactory.makeConstructor("Optimise-1", 0);
    _consOptimise_2_0 = termFactory.makeConstructor("Optimise-2", 0);
    _consNo_use_apply_assertions_0 = termFactory.makeConstructor("No-use-apply-assertions", 0);
    _consNo_use_program_assertions_0 = termFactory.makeConstructor("No-use-program-assertions", 0);
    _consNo_generate_loop_assertions_0 = termFactory.makeConstructor("No-generate-loop-assertions", 0);
    _consNo_generate_if_assertions_0 = termFactory.makeConstructor("No-generate-if-assertions", 0);
    _consNo_normalise_expressions_0 = termFactory.makeConstructor("No-normalise-expressions", 0);
    _consNo_propagate_constant_assignments_0 = termFactory.makeConstructor("No-propagate-constant-assignments", 0);
    _consNo_evaluate_constant_expressions_0 = termFactory.makeConstructor("No-evaluate-constant-expressions", 0);
    _consMerge_complex_multiply_0 = termFactory.makeConstructor("Merge-complex-multiply", 0);
    _consUse_apply_assertions_0 = termFactory.makeConstructor("Use-apply-assertions", 0);
    _consUse_program_assertions_0 = termFactory.makeConstructor("Use-program-assertions", 0);
    _consGenerate_loop_assertions_0 = termFactory.makeConstructor("Generate-loop-assertions", 0);
    _consGenerate_if_assertions_0 = termFactory.makeConstructor("Generate-if-assertions", 0);
    _consNormalise_expressions_0 = termFactory.makeConstructor("Normalise-expressions", 0);
    _consPropagate_constant_assignments_0 = termFactory.makeConstructor("Propagate-constant-assignments", 0);
    _consEvaluate_constant_expressions_0 = termFactory.makeConstructor("Evaluate-constant-expressions", 0);
  }

  public static void initConstants(ITermFactory termFactory)
  { 
    const0 = termFactory.makeString("get-option: ");
    constSimple0 = termFactory.makeAppl(Image_matrix._consSimple_0, NO_TERMS);
    constTrue0 = termFactory.makeAppl(Image_matrix._consTrue_0, NO_TERMS);
    const1 = termFactory.makeTuple(Image_matrix.constSimple0, Image_matrix.constTrue0);
    const2 = termFactory.makeString("--Simple          Use a very simple structure, suitable for debugging and testing");
    constTest0 = termFactory.makeAppl(Image_matrix._consTest_0, NO_TERMS);
    const3 = termFactory.makeTuple(Image_matrix.constTest0, Image_matrix.constTrue0);
    const4 = termFactory.makeString("--test            Generate module <mod>_test to test other implementations");
    constLoop_10 = termFactory.makeAppl(Image_matrix._consLoop_1_0, NO_TERMS);
    const5 = termFactory.makeTuple(Image_matrix.constLoop_10, Image_matrix.constTrue0);
    const6 = termFactory.makeString("--loop-1          Use single-loop structure for apply loop");
    constLoop_20 = termFactory.makeAppl(Image_matrix._consLoop_2_0, NO_TERMS);
    const7 = termFactory.makeTuple(Image_matrix.constLoop_20, Image_matrix.constTrue0);
    const8 = termFactory.makeString("--loop-2          Use two loop structure for apply loop (default)");
    constLoop_100 = termFactory.makeAppl(Image_matrix._consLoop_10_0, NO_TERMS);
    const9 = termFactory.makeTuple(Image_matrix.constLoop_100, Image_matrix.constTrue0);
    const10 = termFactory.makeString("--loop-10         Use ten loop structure for apply loop");
    constLoop_noindex0 = termFactory.makeAppl(Image_matrix._consLoop_noindex_0, NO_TERMS);
    const11 = termFactory.makeTuple(Image_matrix.constLoop_noindex0, Image_matrix.constTrue0);
    const12 = termFactory.makeString("--loop-noindex    Do not use an index variable in the apply loop (default)");
    constLoop_index0 = termFactory.makeAppl(Image_matrix._consLoop_index_0, NO_TERMS);
    const13 = termFactory.makeTuple(Image_matrix.constLoop_index0, Image_matrix.constTrue0);
    const14 = termFactory.makeString("--loop-index      Use an index variable in the apply loop");
    constLoop_block0 = termFactory.makeAppl(Image_matrix._consLoop_block_0, NO_TERMS);
    const15 = termFactory.makeTuple(Image_matrix.constLoop_block0, Image_matrix.constTrue0);
    const16 = termFactory.makeString("--loop-block      Use a block-structured apply loop (default)");
    constLoop_raster0 = termFactory.makeAppl(Image_matrix._consLoop_raster_0, NO_TERMS);
    const17 = termFactory.makeTuple(Image_matrix.constLoop_raster0, Image_matrix.constTrue0);
    const18 = termFactory.makeString("--loop-raster     Use a raster-structured apply loop");
    constLoop_nosingle0 = termFactory.makeAppl(Image_matrix._consLoop_nosingle_0, NO_TERMS);
    const19 = termFactory.makeTuple(Image_matrix.constLoop_nosingle0, Image_matrix.constTrue0);
    const20 = termFactory.makeString("--loop-nosingle   Prevent compiling a single apply loop (default is single loop can be used)");
    constWidth_5120 = termFactory.makeAppl(Image_matrix._consWidth_512_0, NO_TERMS);
    const21 = termFactory.makeTuple(Image_matrix.constWidth_5120, Image_matrix.constTrue0);
    const22 = termFactory.makeString("--width-512       Handle fixed-width image specially (default no special cases)");
    constOptimise_00 = termFactory.makeAppl(Image_matrix._consOptimise_0_0, NO_TERMS);
    const23 = termFactory.makeTuple(Image_matrix.constOptimise_00, Image_matrix.constTrue0);
    const24 = termFactory.makeString("--optimise-0      Do not perform any optimisations");
    constOptimise_10 = termFactory.makeAppl(Image_matrix._consOptimise_1_0, NO_TERMS);
    const25 = termFactory.makeTuple(Image_matrix.constOptimise_10, Image_matrix.constTrue0);
    const26 = termFactory.makeString("--optimise-1      Perform optimisations marked (1) below");
    constOptimise_20 = termFactory.makeAppl(Image_matrix._consOptimise_2_0, NO_TERMS);
    const27 = termFactory.makeTuple(Image_matrix.constOptimise_20, Image_matrix.constTrue0);
    const28 = termFactory.makeString("--optimise-2      Perform optimisations marked (1) or (2) below\nEach of the following options has a --no-... form to negate it");
    constEvaluate_constant_expressions0 = termFactory.makeAppl(Image_matrix._consEvaluate_constant_expressions_0, NO_TERMS);
    const29 = termFactory.makeTuple(Image_matrix.constEvaluate_constant_expressions0, Image_matrix.constTrue0);
    const30 = termFactory.makeString("--evaluate-constant-expressions   (1) Evaluate expressions that contain constants to simplify the expressions");
    constNormalise_expressions0 = termFactory.makeAppl(Image_matrix._consNormalise_expressions_0, NO_TERMS);
    const31 = termFactory.makeTuple(Image_matrix.constNormalise_expressions0, Image_matrix.constTrue0);
    const32 = termFactory.makeString("--normalise-expressions           (1) Convert expressions to canonical form (rearranges and merges terms )");
    constPropagate_constant_assignments0 = termFactory.makeAppl(Image_matrix._consPropagate_constant_assignments_0, NO_TERMS);
    const33 = termFactory.makeTuple(Image_matrix.constPropagate_constant_assignments0, Image_matrix.constTrue0);
    const34 = termFactory.makeString("--propagate-constant-assignments  (2) Propagate values from constant-expression assignments");
    constGenerate_if_assertions0 = termFactory.makeAppl(Image_matrix._consGenerate_if_assertions_0, NO_TERMS);
    const35 = termFactory.makeTuple(Image_matrix.constGenerate_if_assertions0, Image_matrix.constTrue0);
    const36 = termFactory.makeString("--generate-if-assertions          (2) Generate assertions from if statements");
    constGenerate_loop_assertions0 = termFactory.makeAppl(Image_matrix._consGenerate_loop_assertions_0, NO_TERMS);
    const37 = termFactory.makeTuple(Image_matrix.constGenerate_loop_assertions0, Image_matrix.constTrue0);
    const38 = termFactory.makeString("--generate-loop-assertions        (2) Generate assertions from loop statements");
    constUse_program_assertions0 = termFactory.makeAppl(Image_matrix._consUse_program_assertions_0, NO_TERMS);
    const39 = termFactory.makeTuple(Image_matrix.constUse_program_assertions0, Image_matrix.constTrue0);
    const40 = termFactory.makeString("--use-program-assertions          (2) Use assertions found in source program");
    constUse_apply_assertions0 = termFactory.makeAppl(Image_matrix._consUse_apply_assertions_0, NO_TERMS);
    const41 = termFactory.makeTuple(Image_matrix.constUse_apply_assertions0, Image_matrix.constTrue0);
    const42 = termFactory.makeString("--use-apply-assertions            (2) Use assertions generated in apply stage");
    constMerge_complex_multiply0 = termFactory.makeAppl(Image_matrix._consMerge_complex_multiply_0, NO_TERMS);
    const43 = termFactory.makeTuple(Image_matrix.constMerge_complex_multiply0, Image_matrix.constTrue0);
    const44 = termFactory.makeString("--merge-complex-multiply          Merge multiplications involving complex expressions such as 2 * (a+b) + 3 * (a+b)");
    constNo_evaluate_constant_expressions0 = termFactory.makeAppl(Image_matrix._consNo_evaluate_constant_expressions_0, NO_TERMS);
    const45 = termFactory.makeTuple(Image_matrix.constNo_evaluate_constant_expressions0, Image_matrix.constTrue0);
    constNo_propagate_constant_assignments0 = termFactory.makeAppl(Image_matrix._consNo_propagate_constant_assignments_0, NO_TERMS);
    const46 = termFactory.makeTuple(Image_matrix.constNo_propagate_constant_assignments0, Image_matrix.constTrue0);
    constNo_normalise_expressions0 = termFactory.makeAppl(Image_matrix._consNo_normalise_expressions_0, NO_TERMS);
    const47 = termFactory.makeTuple(Image_matrix.constNo_normalise_expressions0, Image_matrix.constTrue0);
    constNo_generate_if_assertions0 = termFactory.makeAppl(Image_matrix._consNo_generate_if_assertions_0, NO_TERMS);
    const48 = termFactory.makeTuple(Image_matrix.constNo_generate_if_assertions0, Image_matrix.constTrue0);
    constNo_generate_loop_assertions0 = termFactory.makeAppl(Image_matrix._consNo_generate_loop_assertions_0, NO_TERMS);
    const49 = termFactory.makeTuple(Image_matrix.constNo_generate_loop_assertions0, Image_matrix.constTrue0);
    constNo_use_program_assertions0 = termFactory.makeAppl(Image_matrix._consNo_use_program_assertions_0, NO_TERMS);
    const50 = termFactory.makeTuple(Image_matrix.constNo_use_program_assertions0, Image_matrix.constTrue0);
    constNo_use_apply_assertions0 = termFactory.makeAppl(Image_matrix._consNo_use_apply_assertions_0, NO_TERMS);
    const51 = termFactory.makeTuple(Image_matrix.constNo_use_apply_assertions0, Image_matrix.constTrue0);
    constNil0 = (IStrategoTerm)termFactory.makeList();
    constCons0 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constOptimise_10, (IStrategoList)Image_matrix.constNil0);
    constCons1 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constOptimise_00, (IStrategoList)Image_matrix.constCons0);
    constCons2 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constOptimise_20, (IStrategoList)Image_matrix.constCons1);
    constCons3 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constLoop_noindex0, (IStrategoList)Image_matrix.constNil0);
    constCons4 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constLoop_index0, (IStrategoList)Image_matrix.constCons3);
    constCons5 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constLoop_noindex0, (IStrategoList)Image_matrix.constCons4);
    constCons6 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constLoop_20, (IStrategoList)Image_matrix.constNil0);
    constCons7 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constLoop_100, (IStrategoList)Image_matrix.constCons6);
    constCons8 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constLoop_20, (IStrategoList)Image_matrix.constCons7);
    constCons9 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constLoop_10, (IStrategoList)Image_matrix.constCons8);
    constCons10 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constLoop_raster0, (IStrategoList)Image_matrix.constNil0);
    constCons11 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constLoop_block0, (IStrategoList)Image_matrix.constCons10);
    constCons12 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constLoop_raster0, (IStrategoList)Image_matrix.constCons11);
    constCons13 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constOptimise_20, (IStrategoList)Image_matrix.constNil0);
    constCons14 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constOptimise_10, (IStrategoList)Image_matrix.constCons13);
    constCons15 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constOptimise_00, (IStrategoList)Image_matrix.constCons14);
    const52 = termFactory.makeString("Remove");
    const53 = termFactory.makeString("512");
    constInt0 = termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{Image_matrix.const53});
    constCons16 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constInt0, (IStrategoList)Image_matrix.constNil0);
    const54 = termFactory.makeString("width");
    constVar0 = termFactory.makeAppl(Image_matrix._consVar_1, new IStrategoTerm[]{Image_matrix.const54});
    constCons17 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constVar0, (IStrategoList)Image_matrix.constNil0);
    const55 = termFactory.makeString("height");
    constVar1 = termFactory.makeAppl(Image_matrix._consVar_1, new IStrategoTerm[]{Image_matrix.const55});
    constCons18 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constVar1, (IStrategoList)Image_matrix.constCons17);
    constVarList0 = termFactory.makeAppl(Image_matrix._consVarList_1, new IStrategoTerm[]{Image_matrix.constCons18});
    constInteger0 = termFactory.makeAppl(Image_matrix._consInteger_0, NO_TERMS);
    constType0 = termFactory.makeAppl(Image_matrix._consType_1, new IStrategoTerm[]{Image_matrix.constInteger0});
    constIn0 = termFactory.makeAppl(Image_matrix._consIn_2, new IStrategoTerm[]{Image_matrix.constVarList0, Image_matrix.constType0});
    constCons19 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constIn0, (IStrategoList)Image_matrix.constNil0);
    constArguments0 = termFactory.makeAppl(Image_matrix._consArguments_1, new IStrategoTerm[]{Image_matrix.constCons19});
    constCons20 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constArguments0, (IStrategoList)Image_matrix.constNil0);
    const56 = termFactory.makeString("app_size");
    constVar2 = termFactory.makeAppl(Image_matrix._consVar_1, new IStrategoTerm[]{Image_matrix.const56});
    constCons21 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constVar2, (IStrategoList)Image_matrix.constNil0);
    const57 = termFactory.makeString("app_index");
    constVar3 = termFactory.makeAppl(Image_matrix._consVar_1, new IStrategoTerm[]{Image_matrix.const57});
    constCons22 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constVar3, (IStrategoList)Image_matrix.constCons21);
    const58 = termFactory.makeString("column");
    constVar4 = termFactory.makeAppl(Image_matrix._consVar_1, new IStrategoTerm[]{Image_matrix.const58});
    constCons23 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constVar4, (IStrategoList)Image_matrix.constCons22);
    const59 = termFactory.makeString("row");
    constVar5 = termFactory.makeAppl(Image_matrix._consVar_1, new IStrategoTerm[]{Image_matrix.const59});
    constCons24 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constVar5, (IStrategoList)Image_matrix.constCons23);
    constVarList1 = termFactory.makeAppl(Image_matrix._consVarList_1, new IStrategoTerm[]{Image_matrix.constCons24});
    constDeclaration0 = termFactory.makeAppl(Image_matrix._consDeclaration_2, new IStrategoTerm[]{Image_matrix.constVarList1, Image_matrix.constInteger0});
    constCons25 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constDeclaration0, (IStrategoList)Image_matrix.constNil0);
    constDeclarations0 = termFactory.makeAppl(Image_matrix._consDeclarations_1, new IStrategoTerm[]{Image_matrix.constCons25});
    constCons26 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constDeclarations0, (IStrategoList)Image_matrix.constNil0);
    const60 = termFactory.makeString("generate-test-code");
    const61 = termFactory.makeString("_ref");
    constCons27 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.const61, (IStrategoList)Image_matrix.constNil0);
    const62 = termFactory.makeString("_test");
    constCons28 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.const62, (IStrategoList)Image_matrix.constNil0);
    const63 = termFactory.makeString("the_function");
    constVar6 = termFactory.makeAppl(Image_matrix._consVar_1, new IStrategoTerm[]{Image_matrix.const63});
    constCons29 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constVar6, (IStrategoList)Image_matrix.constNil0);
    constVarList2 = termFactory.makeAppl(Image_matrix._consVarList_1, new IStrategoTerm[]{Image_matrix.constCons29});
    constFunctionPtr0 = termFactory.makeAppl(Image_matrix._consFunctionPtr_0, NO_TERMS);
    constIn1 = termFactory.makeAppl(Image_matrix._consIn_2, new IStrategoTerm[]{Image_matrix.constVarList2, Image_matrix.constFunctionPtr0});
    constCons30 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constIn1, (IStrategoList)Image_matrix.constNil0);
    constArguments1 = termFactory.makeAppl(Image_matrix._consArguments_1, new IStrategoTerm[]{Image_matrix.constCons30});
    constDeclarations1 = termFactory.makeAppl(Image_matrix._consDeclarations_1, new IStrategoTerm[]{Image_matrix.constNil0});
    const64 = termFactory.makeString("result");
    constVar7 = termFactory.makeAppl(Image_matrix._consVar_1, new IStrategoTerm[]{Image_matrix.const64});
    const65 = termFactory.makeString("applib_test");
    constVar8 = termFactory.makeAppl(Image_matrix._consVar_1, new IStrategoTerm[]{Image_matrix.const65});
    const66 = termFactory.makeString("**Error: --loop=10 --loop=index --loop=block is not supported");
    const67 = termFactory.makeString("**Error: Loop options not correctly specified");
    const68 = termFactory.makeString("0");
    constInt1 = termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{Image_matrix.const68});
    const69 = termFactory.makeString("1");
    constInt2 = termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{Image_matrix.const69});
    constSub0 = termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, Image_matrix.constInt2});
    constSub1 = termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, Image_matrix.constInt2});
    constGeq0 = termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constInt1});
    constLeq0 = termFactory.makeAppl(Image_matrix._consLeq_2, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constSub1});
    constAnd0 = termFactory.makeAppl(Image_matrix._consAnd_2, new IStrategoTerm[]{Image_matrix.constGeq0, Image_matrix.constLeq0});
    constAssert0 = termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{Image_matrix.constAnd0});
    constGeq1 = termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constInt1});
    constLeq1 = termFactory.makeAppl(Image_matrix._consLeq_2, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constSub0});
    constAnd1 = termFactory.makeAppl(Image_matrix._consAnd_2, new IStrategoTerm[]{Image_matrix.constGeq1, Image_matrix.constLeq1});
    constAssert1 = termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{Image_matrix.constAnd1});
    constCAssign0 = termFactory.makeAppl(Image_matrix._consCAssign_2, new IStrategoTerm[]{Image_matrix.constVar3, Image_matrix.constInt1});
    constLt0 = termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar3, Image_matrix.constVar2});
    constAdd0 = termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{Image_matrix.constVar3, Image_matrix.constInt2});
    constCAssign1 = termFactory.makeAppl(Image_matrix._consCAssign_2, new IStrategoTerm[]{Image_matrix.constVar3, Image_matrix.constAdd0});
    constMul0 = termFactory.makeAppl(Image_matrix._consMul_2, new IStrategoTerm[]{Image_matrix.constVar0, Image_matrix.constVar1});
    constAssign0 = termFactory.makeAppl(Image_matrix._consAssign_2, new IStrategoTerm[]{Image_matrix.constVar2, Image_matrix.constMul0});
    constCAssign2 = termFactory.makeAppl(Image_matrix._consCAssign_2, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constInt1});
    constLt1 = termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constVar1});
    constAdd1 = termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constInt2});
    constCAssign3 = termFactory.makeAppl(Image_matrix._consCAssign_2, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constAdd1});
    constCAssign4 = termFactory.makeAppl(Image_matrix._consCAssign_2, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constInt1});
    constComma0 = termFactory.makeAppl(Image_matrix._consComma_2, new IStrategoTerm[]{Image_matrix.constCAssign4, Image_matrix.constCAssign0});
    constLt2 = termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constVar0});
    constAdd2 = termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constInt2});
    constCAssign5 = termFactory.makeAppl(Image_matrix._consCAssign_2, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constAdd2});
    constComma1 = termFactory.makeAppl(Image_matrix._consComma_2, new IStrategoTerm[]{Image_matrix.constCAssign5, Image_matrix.constCAssign1});
    const70 = termFactory.makeString("extreme window dimensions: ");
    constAssign1 = termFactory.makeAppl(Image_matrix._consAssign_2, new IStrategoTerm[]{Image_matrix.constVar3, Image_matrix.constAdd0});
    constCons31 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constAssign1, (IStrategoList)Image_matrix.constNil0);
    constNone0 = termFactory.makeAppl(Image_matrix._consNone_0, NO_TERMS);
    constAdd3 = termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{Image_matrix.constVar3, Image_matrix.constVar0});
    constAdd4 = termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constVar0});
    constAssign2 = termFactory.makeAppl(Image_matrix._consAssign_2, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constAdd2});
    constCons32 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constAssign2, (IStrategoList)Image_matrix.constCons31);
    constStatements0 = termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{Image_matrix.constCons32});
    constAssign3 = termFactory.makeAppl(Image_matrix._consAssign_2, new IStrategoTerm[]{Image_matrix.constVar3, Image_matrix.constInt1});
    constCons33 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.constAssign2, (IStrategoList)Image_matrix.constNil0);
    constStatements1 = termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{Image_matrix.constCons33});
    constMul1 = termFactory.makeAppl(Image_matrix._consMul_2, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constVar0});
    constAdd5 = termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{Image_matrix.constMul1, Image_matrix.constVar4});
    const71 = termFactory.makeString("");
    constCons34 = (IStrategoTerm)termFactory.makeListCons(Image_matrix.const71, (IStrategoList)Image_matrix.constNil0);
  }

  @SuppressWarnings("all") public static class get_option_0_1 extends Strategy 
  { 
    public static get_option_0_1 instance = new get_option_0_1();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term, IStrategoTerm v_6)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("get_option_0_1");
      Fail0:
      { 
        IStrategoTerm w_6 = null;
        IStrategoTerm x_6 = null;
        x_6 = term;
        term = try_1_0.instance.invoke(context, v_6, get_config_0_0.instance);
        if(term == null)
          break Fail0;
        w_6 = term;
        term = termFactory.makeTuple(Image_matrix.const0, termFactory.makeTuple(v_6, w_6));
        term = debug_options_0_0.instance.invoke(context, term);
        if(term == null)
          break Fail0;
        term = get_config_0_0.instance.invoke(context, v_6);
        if(term == null)
          break Fail0;
        term = x_6;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class debug_options_0_0 extends Strategy 
  { 
    public static debug_options_0_0 instance = new debug_options_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail1:
      { 
        if(true)
          return term;
      }
      context.push("debug_options_0_0");
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class options_io_wrap_1_0 extends Strategy 
  { 
    public static options_io_wrap_1_0 instance = new options_io_wrap_1_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term, Strategy z_6)
    { 
      context.push("options_io_wrap_1_0");
      Fail2:
      { 
        lifted2 lifted210 = new lifted2();
        lifted210.z_6 = z_6;
        term = io_wrap_2_0.instance.invoke(context, term, set_options_0_0.instance, lifted210);
        if(term == null)
          break Fail2;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class set_options_0_0 extends Strategy 
  { 
    public static set_options_0_0 instance = new set_options_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("set_options_0_0");
      Fail3:
      { 
        IStrategoTerm term0 = term;
        Success0:
        { 
          Fail4:
          { 
            term = $Option_3_0.instance.invoke(context, term, lifted3.instance, lifted4.instance, lifted5.instance);
            if(term == null)
              break Fail4;
            if(true)
              break Success0;
          }
          term = term0;
          IStrategoTerm term1 = term;
          Success1:
          { 
            Fail5:
            { 
              term = $Option_3_0.instance.invoke(context, term, lifted6.instance, lifted7.instance, lifted8.instance);
              if(term == null)
                break Fail5;
              if(true)
                break Success1;
            }
            term = term1;
            IStrategoTerm term2 = term;
            Success2:
            { 
              Fail6:
              { 
                term = $Option_3_0.instance.invoke(context, term, lifted9.instance, lifted10.instance, lifted11.instance);
                if(term == null)
                  break Fail6;
                if(true)
                  break Success2;
              }
              term = term2;
              IStrategoTerm term3 = term;
              Success3:
              { 
                Fail7:
                { 
                  term = $Option_3_0.instance.invoke(context, term, lifted12.instance, lifted13.instance, lifted14.instance);
                  if(term == null)
                    break Fail7;
                  if(true)
                    break Success3;
                }
                term = term3;
                IStrategoTerm term4 = term;
                Success4:
                { 
                  Fail8:
                  { 
                    term = $Option_3_0.instance.invoke(context, term, lifted15.instance, lifted16.instance, lifted17.instance);
                    if(term == null)
                      break Fail8;
                    if(true)
                      break Success4;
                  }
                  term = term4;
                  IStrategoTerm term5 = term;
                  Success5:
                  { 
                    Fail9:
                    { 
                      term = $Option_3_0.instance.invoke(context, term, lifted18.instance, lifted19.instance, lifted20.instance);
                      if(term == null)
                        break Fail9;
                      if(true)
                        break Success5;
                    }
                    term = term5;
                    IStrategoTerm term6 = term;
                    Success6:
                    { 
                      Fail10:
                      { 
                        term = $Option_3_0.instance.invoke(context, term, lifted21.instance, lifted22.instance, lifted23.instance);
                        if(term == null)
                          break Fail10;
                        if(true)
                          break Success6;
                      }
                      term = term6;
                      IStrategoTerm term7 = term;
                      Success7:
                      { 
                        Fail11:
                        { 
                          term = $Option_3_0.instance.invoke(context, term, lifted24.instance, lifted25.instance, lifted26.instance);
                          if(term == null)
                            break Fail11;
                          if(true)
                            break Success7;
                        }
                        term = term7;
                        IStrategoTerm term8 = term;
                        Success8:
                        { 
                          Fail12:
                          { 
                            term = $Option_3_0.instance.invoke(context, term, lifted27.instance, lifted28.instance, lifted29.instance);
                            if(term == null)
                              break Fail12;
                            if(true)
                              break Success8;
                          }
                          term = term8;
                          IStrategoTerm term9 = term;
                          Success9:
                          { 
                            Fail13:
                            { 
                              term = $Option_3_0.instance.invoke(context, term, lifted30.instance, lifted31.instance, lifted32.instance);
                              if(term == null)
                                break Fail13;
                              if(true)
                                break Success9;
                            }
                            term = term9;
                            IStrategoTerm term10 = term;
                            Success10:
                            { 
                              Fail14:
                              { 
                                term = $Option_3_0.instance.invoke(context, term, lifted33.instance, lifted34.instance, lifted35.instance);
                                if(term == null)
                                  break Fail14;
                                if(true)
                                  break Success10;
                              }
                              term = term10;
                              IStrategoTerm term11 = term;
                              Success11:
                              { 
                                Fail15:
                                { 
                                  term = $Option_3_0.instance.invoke(context, term, lifted36.instance, lifted37.instance, lifted38.instance);
                                  if(term == null)
                                    break Fail15;
                                  if(true)
                                    break Success11;
                                }
                                term = term11;
                                IStrategoTerm term12 = term;
                                Success12:
                                { 
                                  Fail16:
                                  { 
                                    term = $Option_3_0.instance.invoke(context, term, lifted39.instance, lifted40.instance, lifted41.instance);
                                    if(term == null)
                                      break Fail16;
                                    if(true)
                                      break Success12;
                                  }
                                  term = term12;
                                  IStrategoTerm term13 = term;
                                  Success13:
                                  { 
                                    Fail17:
                                    { 
                                      term = $Option_3_0.instance.invoke(context, term, lifted42.instance, lifted43.instance, lifted44.instance);
                                      if(term == null)
                                        break Fail17;
                                      if(true)
                                        break Success13;
                                    }
                                    term = term13;
                                    IStrategoTerm term14 = term;
                                    Success14:
                                    { 
                                      Fail18:
                                      { 
                                        term = $Option_3_0.instance.invoke(context, term, lifted45.instance, lifted46.instance, lifted47.instance);
                                        if(term == null)
                                          break Fail18;
                                        if(true)
                                          break Success14;
                                      }
                                      term = term14;
                                      IStrategoTerm term15 = term;
                                      Success15:
                                      { 
                                        Fail19:
                                        { 
                                          term = $Option_3_0.instance.invoke(context, term, lifted48.instance, lifted49.instance, lifted50.instance);
                                          if(term == null)
                                            break Fail19;
                                          if(true)
                                            break Success15;
                                        }
                                        term = term15;
                                        IStrategoTerm term16 = term;
                                        Success16:
                                        { 
                                          Fail20:
                                          { 
                                            term = $Option_3_0.instance.invoke(context, term, lifted51.instance, lifted52.instance, lifted53.instance);
                                            if(term == null)
                                              break Fail20;
                                            if(true)
                                              break Success16;
                                          }
                                          term = term16;
                                          IStrategoTerm term17 = term;
                                          Success17:
                                          { 
                                            Fail21:
                                            { 
                                              term = $Option_3_0.instance.invoke(context, term, lifted54.instance, lifted55.instance, lifted56.instance);
                                              if(term == null)
                                                break Fail21;
                                              if(true)
                                                break Success17;
                                            }
                                            term = term17;
                                            IStrategoTerm term18 = term;
                                            Success18:
                                            { 
                                              Fail22:
                                              { 
                                                term = $Option_3_0.instance.invoke(context, term, lifted57.instance, lifted58.instance, lifted59.instance);
                                                if(term == null)
                                                  break Fail22;
                                                if(true)
                                                  break Success18;
                                              }
                                              term = term18;
                                              IStrategoTerm term19 = term;
                                              Success19:
                                              { 
                                                Fail23:
                                                { 
                                                  term = $Option_3_0.instance.invoke(context, term, lifted60.instance, lifted61.instance, lifted62.instance);
                                                  if(term == null)
                                                    break Fail23;
                                                  if(true)
                                                    break Success19;
                                                }
                                                term = term19;
                                                IStrategoTerm term20 = term;
                                                Success20:
                                                { 
                                                  Fail24:
                                                  { 
                                                    term = $Option_3_0.instance.invoke(context, term, lifted63.instance, lifted64.instance, lifted65.instance);
                                                    if(term == null)
                                                      break Fail24;
                                                    if(true)
                                                      break Success20;
                                                  }
                                                  term = term20;
                                                  IStrategoTerm term21 = term;
                                                  Success21:
                                                  { 
                                                    Fail25:
                                                    { 
                                                      term = $Option_3_0.instance.invoke(context, term, lifted66.instance, lifted67.instance, lifted68.instance);
                                                      if(term == null)
                                                        break Fail25;
                                                      if(true)
                                                        break Success21;
                                                    }
                                                    term = term21;
                                                    IStrategoTerm term22 = term;
                                                    Success22:
                                                    { 
                                                      Fail26:
                                                      { 
                                                        term = $Option_3_0.instance.invoke(context, term, lifted69.instance, lifted70.instance, lifted71.instance);
                                                        if(term == null)
                                                          break Fail26;
                                                        if(true)
                                                          break Success22;
                                                      }
                                                      term = term22;
                                                      IStrategoTerm term23 = term;
                                                      Success23:
                                                      { 
                                                        Fail27:
                                                        { 
                                                          term = $Option_3_0.instance.invoke(context, term, lifted72.instance, lifted73.instance, lifted74.instance);
                                                          if(term == null)
                                                            break Fail27;
                                                          if(true)
                                                            break Success23;
                                                        }
                                                        term = term23;
                                                        IStrategoTerm term24 = term;
                                                        Success24:
                                                        { 
                                                          Fail28:
                                                          { 
                                                            term = $Option_3_0.instance.invoke(context, term, lifted75.instance, lifted76.instance, lifted77.instance);
                                                            if(term == null)
                                                              break Fail28;
                                                            if(true)
                                                              break Success24;
                                                          }
                                                          term = term24;
                                                          IStrategoTerm term25 = term;
                                                          Success25:
                                                          { 
                                                            Fail29:
                                                            { 
                                                              term = $Option_3_0.instance.invoke(context, term, lifted78.instance, lifted79.instance, lifted80.instance);
                                                              if(term == null)
                                                                break Fail29;
                                                              if(true)
                                                                break Success25;
                                                            }
                                                            term = term25;
                                                            IStrategoTerm term26 = term;
                                                            Success26:
                                                            { 
                                                              Fail30:
                                                              { 
                                                                term = $Option_3_0.instance.invoke(context, term, lifted81.instance, lifted82.instance, lifted83.instance);
                                                                if(term == null)
                                                                  break Fail30;
                                                                if(true)
                                                                  break Success26;
                                                              }
                                                              term = term26;
                                                              IStrategoTerm term27 = term;
                                                              Success27:
                                                              { 
                                                                Fail31:
                                                                { 
                                                                  term = $Option_3_0.instance.invoke(context, term, lifted84.instance, lifted85.instance, lifted86.instance);
                                                                  if(term == null)
                                                                    break Fail31;
                                                                  if(true)
                                                                    break Success27;
                                                                }
                                                                term = $Option_3_0.instance.invoke(context, term27, lifted87.instance, lifted88.instance, lifted89.instance);
                                                                if(term == null)
                                                                  break Fail3;
                                                              }
                                                            }
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class do_defaults_1_0 extends Strategy 
  { 
    public static do_defaults_1_0 instance = new do_defaults_1_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term, Strategy b_7)
    { 
      context.push("do_defaults_1_0");
      Fail32:
      { 
        IStrategoTerm a_7 = null;
        a_7 = term;
        term = try_1_0.instance.invoke(context, term, lifted90.instance);
        if(term == null)
          break Fail32;
        term = try_1_0.instance.invoke(context, term, lifted91.instance);
        if(term == null)
          break Fail32;
        term = try_1_0.instance.invoke(context, term, lifted93.instance);
        if(term == null)
          break Fail32;
        term = try_1_0.instance.invoke(context, term, lifted94.instance);
        if(term == null)
          break Fail32;
        term = try_1_0.instance.invoke(context, term, lifted95.instance);
        if(term == null)
          break Fail32;
        term = try_1_0.instance.invoke(context, term, lifted96.instance);
        if(term == null)
          break Fail32;
        term = try_1_0.instance.invoke(context, term, lifted97.instance);
        if(term == null)
          break Fail32;
        term = try_1_0.instance.invoke(context, term, lifted98.instance);
        if(term == null)
          break Fail32;
        term = try_1_0.instance.invoke(context, term, lifted99.instance);
        if(term == null)
          break Fail32;
        term = try_1_0.instance.invoke(context, term, lifted100.instance);
        if(term == null)
          break Fail32;
        term = try_1_0.instance.invoke(context, term, lifted101.instance);
        if(term == null)
          break Fail32;
        term = try_1_0.instance.invoke(context, term, lifted102.instance);
        if(term == null)
          break Fail32;
        term = try_1_0.instance.invoke(context, term, lifted103.instance);
        if(term == null)
          break Fail32;
        term = try_1_0.instance.invoke(context, term, lifted104.instance);
        if(term == null)
          break Fail32;
        term = try_1_0.instance.invoke(context, term, lifted105.instance);
        if(term == null)
          break Fail32;
        term = b_7.invoke(context, a_7);
        if(term == null)
          break Fail32;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class option_group_default_0_0 extends Strategy 
  { 
    public static option_group_default_0_0 instance = new option_group_default_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("option_group_default_0_0");
      Fail33:
      { 
        IStrategoTerm term28 = term;
        Success28:
        { 
          Fail34:
          { 
            term = option_group_default_last_0_0.instance.invoke(context, term);
            if(term == null)
              break Fail34;
            if(true)
              break Success28;
          }
          term = option_group_default_more_0_0.instance.invoke(context, term28);
          if(term == null)
            break Fail33;
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class option_group_default_last_0_0 extends Strategy 
  { 
    public static option_group_default_last_0_0 instance = new option_group_default_last_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("option_group_default_last_0_0");
      Fail35:
      { 
        IStrategoTerm y_7 = null;
        if(term.getTermType() != IStrategoTerm.LIST || ((IStrategoList)term).isEmpty())
          break Fail35;
        y_7 = ((IStrategoList)term).head();
        IStrategoTerm arg0 = ((IStrategoList)term).tail();
        if(arg0.getTermType() != IStrategoTerm.LIST || !((IStrategoList)arg0).isEmpty())
          break Fail35;
        IStrategoTerm term29 = term;
        Success29:
        { 
          Fail36:
          { 
            IStrategoTerm z_7 = null;
            z_7 = term;
            term = y_7;
            IStrategoTerm term30 = term;
            Success30:
            { 
              Fail37:
              { 
                term = get_config_0_0.instance.invoke(context, term);
                if(term == null)
                  break Fail37;
                { 
                  if(true)
                    break Fail36;
                  if(true)
                    break Success30;
                }
              }
              term = term30;
            }
            term = z_7;
            { 
              IStrategoTerm a_8 = null;
              term = termFactory.makeTuple(y_7, Image_matrix.constTrue0);
              term = set_config_0_0.instance.invoke(context, term);
              if(term == null)
                break Fail35;
              a_8 = term;
              term = termFactory.makeTuple(y_7, Image_matrix.constTrue0);
              term = debug_options_0_0.instance.invoke(context, term);
              if(term == null)
                break Fail35;
              term = a_8;
              if(true)
                break Success29;
            }
          }
          term = term29;
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class option_group_default_more_0_0 extends Strategy 
  { 
    public static option_group_default_more_0_0 instance = new option_group_default_more_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("option_group_default_more_0_0");
      Fail38:
      { 
        IStrategoTerm b_8 = null;
        IStrategoTerm c_8 = null;
        if(term.getTermType() != IStrategoTerm.LIST || ((IStrategoList)term).isEmpty())
          break Fail38;
        b_8 = ((IStrategoList)term).head();
        c_8 = ((IStrategoList)term).tail();
        IStrategoTerm term31 = term;
        Success31:
        { 
          Fail39:
          { 
            IStrategoTerm d_8 = null;
            d_8 = term;
            term = b_8;
            IStrategoTerm term32 = term;
            Success32:
            { 
              Fail40:
              { 
                term = get_config_0_0.instance.invoke(context, term);
                if(term == null)
                  break Fail40;
                { 
                  if(true)
                    break Fail39;
                  if(true)
                    break Success32;
                }
              }
              term = term32;
            }
            term = d_8;
            { 
              term = option_group_default_0_0.instance.invoke(context, c_8);
              if(term == null)
                break Fail38;
              if(true)
                break Success31;
            }
          }
          term = term31;
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class mutually_exclusive_options_default_0_0 extends Strategy 
  { 
    public static mutually_exclusive_options_default_0_0 instance = new mutually_exclusive_options_default_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("mutually_exclusive_options_default_0_0");
      Fail41:
      { 
        IStrategoTerm term33 = term;
        Success33:
        { 
          Fail42:
          { 
            term = mutually_exclusive_options_default_last_0_0.instance.invoke(context, term);
            if(term == null)
              break Fail42;
            if(true)
              break Success33;
          }
          term = mutually_exclusive_options_default_more_0_0.instance.invoke(context, term33);
          if(term == null)
            break Fail41;
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class mutually_exclusive_options_default_last_0_0 extends Strategy 
  { 
    public static mutually_exclusive_options_default_last_0_0 instance = new mutually_exclusive_options_default_last_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("mutually_exclusive_options_default_last_0_0");
      Fail43:
      { 
        IStrategoTerm e_8 = null;
        if(term.getTermType() != IStrategoTerm.LIST || ((IStrategoList)term).isEmpty())
          break Fail43;
        e_8 = ((IStrategoList)term).head();
        IStrategoTerm arg1 = ((IStrategoList)term).tail();
        if(arg1.getTermType() != IStrategoTerm.LIST || !((IStrategoList)arg1).isEmpty())
          break Fail43;
        IStrategoTerm term34 = term;
        Success34:
        { 
          Fail44:
          { 
            IStrategoTerm f_8 = null;
            f_8 = term;
            term = e_8;
            IStrategoTerm term35 = term;
            Success35:
            { 
              Fail45:
              { 
                term = get_config_0_0.instance.invoke(context, term);
                if(term == null)
                  break Fail45;
                { 
                  if(true)
                    break Fail44;
                  if(true)
                    break Success35;
                }
              }
              term = term35;
            }
            term = f_8;
            { 
              IStrategoTerm g_8 = null;
              term = termFactory.makeTuple(e_8, Image_matrix.constTrue0);
              term = set_config_0_0.instance.invoke(context, term);
              if(term == null)
                break Fail43;
              g_8 = term;
              term = termFactory.makeTuple(e_8, Image_matrix.constTrue0);
              term = debug_options_0_0.instance.invoke(context, term);
              if(term == null)
                break Fail43;
              term = g_8;
              if(true)
                break Success34;
            }
          }
          term = term34;
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class mutually_exclusive_options_default_more_0_0 extends Strategy 
  { 
    public static mutually_exclusive_options_default_more_0_0 instance = new mutually_exclusive_options_default_more_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("mutually_exclusive_options_default_more_0_0");
      Fail46:
      { 
        IStrategoTerm h_8 = null;
        IStrategoTerm i_8 = null;
        if(term.getTermType() != IStrategoTerm.LIST || ((IStrategoList)term).isEmpty())
          break Fail46;
        i_8 = ((IStrategoList)term).head();
        h_8 = ((IStrategoList)term).tail();
        Success36:
        { 
          Fail47:
          { 
            IStrategoTerm j_8 = null;
            j_8 = term;
            term = i_8;
            IStrategoTerm term37 = term;
            Success37:
            { 
              Fail48:
              { 
                term = get_config_0_0.instance.invoke(context, term);
                if(term == null)
                  break Fail48;
                { 
                  if(true)
                    break Fail47;
                  if(true)
                    break Success37;
                }
              }
              term = term37;
            }
            term = j_8;
            { 
              term = mutually_exclusive_options_default_0_0.instance.invoke(context, h_8);
              if(term == null)
                break Fail46;
              if(true)
                break Success36;
            }
          }
          term = cancel_duplicates_0_1.instance.invoke(context, h_8, i_8);
          if(term == null)
            break Fail46;
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class cancel_duplicates_0_1 extends Strategy 
  { 
    public static cancel_duplicates_0_1 instance = new cancel_duplicates_0_1();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term, IStrategoTerm k_8)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("cancel_duplicates_0_1");
      Fail49:
      { 
        TermReference l_8 = new TermReference();
        IStrategoTerm m_8 = null;
        if(term.getTermType() != IStrategoTerm.LIST || ((IStrategoList)term).isEmpty())
          break Fail49;
        if(l_8.value == null)
          l_8.value = ((IStrategoList)term).head();
        else
          if(l_8.value != ((IStrategoList)term).head() && !l_8.value.match(((IStrategoList)term).head()))
            break Fail49;
        m_8 = ((IStrategoList)term).tail();
        IStrategoTerm term38 = term;
        Success38:
        { 
          Fail50:
          { 
            IStrategoTerm n_8 = null;
            n_8 = term;
            if(term.getTermType() != IStrategoTerm.LIST || ((IStrategoList)term).isEmpty())
              break Fail50;
            if(((IStrategoList)term).head() != k_8 && !k_8.match(((IStrategoList)term).head()))
              break Fail50;
            term = n_8;
            { 
              term = this.invoke(context, m_8, k_8);
              if(term == null)
                break Fail49;
              if(true)
                break Success38;
            }
          }
          term = term38;
          lifted106 lifted1060 = new lifted106();
          lifted1060.l_8 = l_8;
          term = try_1_0.instance.invoke(context, term, lifted1060);
          if(term == null)
            break Fail49;
          if(l_8.value == null)
            break Fail49;
          term = termFactory.makeTuple(Image_matrix.const52, l_8.value);
          term = debug_options_0_0.instance.invoke(context, term);
          if(term == null)
            break Fail49;
          term = this.invoke(context, m_8, k_8);
          if(term == null)
            break Fail49;
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class topdownstopping_1_0 extends Strategy 
  { 
    public static topdownstopping_1_0 instance = new topdownstopping_1_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term, Strategy p_8)
    { 
      context.push("topdownstopping_1_0");
      Fail51:
      { 
        IStrategoTerm term39 = term;
        Success39:
        { 
          Fail52:
          { 
            term = p_8.invoke(context, term);
            if(term == null)
              break Fail52;
            if(true)
              break Success39;
          }
          term = term39;
          lifted107 lifted1070 = new lifted107();
          lifted1070.p_8 = p_8;
          term = SRTS_all.instance.invoke(context, term, lifted1070);
          if(term == null)
            break Fail51;
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class io_$Image__matrix_0_0 extends Strategy 
  { 
    public static io_$Image__matrix_0_0 instance = new io_$Image__matrix_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("io_Image__matrix_0_0");
      Fail53:
      { 
        term = options_io_wrap_1_0.instance.invoke(context, term, $Apply__$Image__matrix_0_0.instance);
        if(term == null)
          break Fail53;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Apply__$Image__matrix_0_0 extends Strategy 
  { 
    public static $Apply__$Image__matrix_0_0 instance = new $Apply__$Image__matrix_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("Apply__Image__matrix_0_0");
      Fail54:
      { 
        IStrategoTerm term40 = term;
        Success40:
        { 
          Fail55:
          { 
            IStrategoTerm j_9 = null;
            j_9 = term;
            term = get_option_0_1.instance.invoke(context, j_9, Image_matrix.constTest0);
            if(term == null)
              break Fail55;
            { 
              term = topdownstopping_1_0.instance.invoke(context, term, generate_test_code_0_0.instance);
              if(term == null)
                break Fail54;
              if(true)
                break Success40;
            }
          }
          term = topdown_1_0.instance.invoke(context, term40, lifted111.instance);
          if(term == null)
            break Fail54;
        }
        term = try_1_0.instance.invoke(context, term, lifted113.instance);
        if(term == null)
          break Fail54;
        term = try_1_0.instance.invoke(context, term, lifted114.instance);
        if(term == null)
          break Fail54;
        term = fix_loop_window_0_0.instance.invoke(context, term);
        if(term == null)
          break Fail54;
        term = topdown_1_0.instance.invoke(context, term, lifted117.instance);
        if(term == null)
          break Fail54;
        term = fix_windows_0_0.instance.invoke(context, term);
        if(term == null)
          break Fail54;
        term = topdown_1_0.instance.invoke(context, term, lifted119.instance);
        if(term == null)
          break Fail54;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class declare_variables_0_0 extends Strategy 
  { 
    public static declare_variables_0_0 instance = new declare_variables_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      Fail56:
      { 
        IStrategoTerm q_9 = null;
        IStrategoTerm r_9 = null;
        IStrategoTerm s_9 = null;
        IStrategoTerm t_9 = null;
        IStrategoTerm u_9 = null;
        if(term.getTermType() != IStrategoTerm.APPL || Image_matrix._consProcedure_5 != ((IStrategoAppl)term).getConstructor())
          break Fail56;
        q_9 = term.getSubterm(0);
        r_9 = term.getSubterm(1);
        s_9 = term.getSubterm(2);
        t_9 = term.getSubterm(3);
        u_9 = term.getSubterm(4);
        term = termFactory.makeAppl(Image_matrix._consProcedure_5, new IStrategoTerm[]{q_9, termFactory.makeAppl(Image_matrix._consArguments_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(r_9, (IStrategoList)Image_matrix.constCons20)}), (IStrategoTerm)termFactory.makeListCons(s_9, (IStrategoList)Image_matrix.constCons26), t_9, u_9});
        if(true)
          return term;
      }
      context.push("declare_variables_0_0");
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class generate_test_code_0_0 extends Strategy 
  { 
    public static generate_test_code_0_0 instance = new generate_test_code_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("generate_test_code_0_0");
      Fail57:
      { 
        IStrategoTerm v_9 = null;
        IStrategoTerm w_9 = null;
        IStrategoTerm x_9 = null;
        IStrategoTerm y_9 = null;
        IStrategoTerm z_9 = null;
        IStrategoTerm a_10 = null;
        IStrategoTerm b_10 = null;
        if(term.getTermType() != IStrategoTerm.APPL || Image_matrix._consProcedure_5 != ((IStrategoAppl)term).getConstructor())
          break Fail57;
        IStrategoTerm arg3 = term.getSubterm(0);
        if(arg3.getTermType() != IStrategoTerm.APPL || Image_matrix._consVar_1 != ((IStrategoAppl)arg3).getConstructor())
          break Fail57;
        v_9 = arg3.getSubterm(0);
        w_9 = term.getSubterm(1);
        x_9 = term.getSubterm(2);
        y_9 = term.getSubterm(3);
        z_9 = term.getSubterm(4);
        term = debug_0_0.instance.invoke(context, Image_matrix.const60);
        if(term == null)
          break Fail57;
        term = (IStrategoTerm)termFactory.makeListCons(v_9, (IStrategoList)Image_matrix.constCons27);
        term = concat_strings_0_0.instance.invoke(context, term);
        if(term == null)
          break Fail57;
        term = termFactory.makeAppl(Image_matrix._consVar_1, new IStrategoTerm[]{term});
        a_10 = term;
        term = (IStrategoTerm)termFactory.makeListCons(v_9, (IStrategoList)Image_matrix.constCons28);
        term = concat_strings_0_0.instance.invoke(context, term);
        if(term == null)
          break Fail57;
        b_10 = term;
        term = termFactory.makeAppl(Image_matrix._consProcedure_5, new IStrategoTerm[]{a_10, w_9, x_9, y_9, z_9});
        term = declare_variables_0_0.instance.invoke(context, term);
        if(term == null)
          break Fail57;
        term = termFactory.makeAppl(Image_matrix._consModule_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(term, termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consProcedure_5, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consVar_1, new IStrategoTerm[]{b_10}), Image_matrix.constArguments1, Image_matrix.constDeclarations1, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssign_2, new IStrategoTerm[]{Image_matrix.constVar7, termFactory.makeAppl(Image_matrix._consFunc_2, new IStrategoTerm[]{Image_matrix.constVar8, termFactory.makeAppl(Image_matrix._consComma_2, new IStrategoTerm[]{Image_matrix.constVar6, a_10})})}), (IStrategoList)Image_matrix.constNil0)}), termFactory.makeAppl(Image_matrix._consVar_1, new IStrategoTerm[]{b_10})}), (IStrategoList)Image_matrix.constNil0))});
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class fix_loop_window_0_0 extends Strategy 
  { 
    public static fix_loop_window_0_0 instance = new fix_loop_window_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("fix_loop_window_0_0");
      Fail58:
      { 
        IStrategoTerm term42 = term;
        Success41:
        { 
          Fail59:
          { 
            IStrategoTerm m_10 = null;
            m_10 = term;
            term = get_option_0_1.instance.invoke(context, m_10, Image_matrix.constLoop_10);
            if(term == null)
              break Fail59;
            IStrategoTerm term43 = term;
            Success42:
            { 
              Fail60:
              { 
                IStrategoTerm o_10 = null;
                o_10 = term;
                term = get_option_0_1.instance.invoke(context, o_10, Image_matrix.constLoop_index0);
                if(term == null)
                  break Fail60;
                { 
                  if(true)
                    break Fail59;
                  if(true)
                    break Success42;
                }
              }
              term = term43;
            }
            term = topdown_1_0.instance.invoke(context, term, lifted121.instance);
            if(term == null)
              break Fail59;
            if(true)
              break Success41;
          }
          term = term42;
          IStrategoTerm term44 = term;
          Success43:
          { 
            Fail61:
            { 
              IStrategoTerm q_10 = null;
              q_10 = term;
              term = get_option_0_1.instance.invoke(context, q_10, Image_matrix.constLoop_20);
              if(term == null)
                break Fail61;
              IStrategoTerm term45 = term;
              Success44:
              { 
                Fail62:
                { 
                  IStrategoTerm s_10 = null;
                  s_10 = term;
                  term = get_option_0_1.instance.invoke(context, s_10, Image_matrix.constLoop_index0);
                  if(term == null)
                    break Fail62;
                  term = topdown_1_0.instance.invoke(context, term, lifted123.instance);
                  if(term == null)
                    break Fail62;
                  if(true)
                    break Success44;
                }
                term = topdown_1_0.instance.invoke(context, term45, lifted125.instance);
                if(term == null)
                  break Fail61;
              }
              if(true)
                break Success43;
            }
            term = term44;
            Success45:
            { 
              Fail63:
              { 
                IStrategoTerm u_10 = null;
                u_10 = term;
                term = get_option_0_1.instance.invoke(context, u_10, Image_matrix.constLoop_100);
                if(term == null)
                  break Fail63;
                IStrategoTerm term47 = term;
                Success46:
                { 
                  Fail64:
                  { 
                    IStrategoTerm w_10 = null;
                    w_10 = term;
                    term = get_option_0_1.instance.invoke(context, w_10, Image_matrix.constLoop_index0);
                    if(term == null)
                      break Fail64;
                    IStrategoTerm term48 = term;
                    Success47:
                    { 
                      Fail65:
                      { 
                        IStrategoTerm y_10 = null;
                        y_10 = term;
                        term = get_option_0_1.instance.invoke(context, y_10, Image_matrix.constLoop_block0);
                        if(term == null)
                          break Fail65;
                        term = debug_0_0.instance.invoke(context, Image_matrix.const66);
                        if(term == null)
                          break Fail65;
                        term = Image_matrix.constNil0;
                        if(true)
                          break Success47;
                      }
                      term = topdown_1_0.instance.invoke(context, term48, lifted127.instance);
                      if(term == null)
                        break Fail64;
                    }
                    if(true)
                      break Success46;
                  }
                  term = term47;
                  IStrategoTerm term49 = term;
                  Success48:
                  { 
                    Fail66:
                    { 
                      IStrategoTerm a_11 = null;
                      a_11 = term;
                      term = get_option_0_1.instance.invoke(context, a_11, Image_matrix.constLoop_block0);
                      if(term == null)
                        break Fail66;
                      term = topdown_1_0.instance.invoke(context, term, lifted129.instance);
                      if(term == null)
                        break Fail66;
                      if(true)
                        break Success48;
                    }
                    term = topdown_1_0.instance.invoke(context, term49, lifted131.instance);
                    if(term == null)
                      break Fail63;
                  }
                }
                if(true)
                  break Success45;
              }
              term = debug_0_0.instance.invoke(context, Image_matrix.const67);
              if(term == null)
                break Fail58;
              term = Image_matrix.constNil0;
            }
          }
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class fix_windows_0_0 extends Strategy 
  { 
    public static fix_windows_0_0 instance = new fix_windows_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("fix_windows_0_0");
      Fail67:
      { 
        IStrategoTerm term50 = term;
        Success49:
        { 
          Fail68:
          { 
            IStrategoTerm c_11 = null;
            c_11 = term;
            term = get_option_0_1.instance.invoke(context, c_11, Image_matrix.constLoop_index0);
            if(term == null)
              break Fail68;
            term = fix_windows_index_0_0.instance.invoke(context, term);
            if(term == null)
              break Fail68;
            if(true)
              break Success49;
          }
          term = fix_windows_noindex_0_0.instance.invoke(context, term50);
          if(term == null)
            break Fail67;
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class fix_windows_noindex_0_0 extends Strategy 
  { 
    public static fix_windows_noindex_0_0 instance = new fix_windows_noindex_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("fix_windows_noindex_0_0");
      Fail69:
      { 
        term = topdown_1_0.instance.invoke(context, term, lifted133.instance);
        if(term == null)
          break Fail69;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class fix_windows_index_0_0 extends Strategy 
  { 
    public static fix_windows_index_0_0 instance = new fix_windows_index_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("fix_windows_index_0_0");
      Fail70:
      { 
        term = topdown_1_0.instance.invoke(context, term, lifted135.instance);
        if(term == null)
          break Fail70;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class make_fixed_width_cases_0_1 extends Strategy 
  { 
    public static make_fixed_width_cases_0_1 instance = new make_fixed_width_cases_0_1();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term, IStrategoTerm ref_d_11)
    { 
      TermReference d_11 = new TermReference(ref_d_11);
      context.push("make_fixed_width_cases_0_1");
      Fail71:
      { 
        lifted137 lifted1370 = new lifted137();
        lifted1370.d_11 = d_11;
        term = topdownstopping_1_0.instance.invoke(context, term, lifted1370);
        if(term == null)
          break Fail71;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class fixed_width_cases_0_1 extends Strategy 
  { 
    public static fixed_width_cases_0_1 instance = new fixed_width_cases_0_1();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term, IStrategoTerm e_11)
    { 
      context.push("fixed_width_cases_0_1");
      Fail72:
      { 
        if(term.getTermType() != IStrategoTerm.APPL || Image_matrix._consApplyLoop_6 != ((IStrategoAppl)term).getConstructor())
          break Fail72;
        term = fixed_width_generate_0_1.instance.invoke(context, term, e_11);
        if(term == null)
          break Fail72;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class fixed_width_generate_0_1 extends Strategy 
  { 
    public static fixed_width_generate_0_1 instance = new fixed_width_generate_0_1();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term, IStrategoTerm l_11)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("fixed_width_generate_0_1");
      Fail73:
      { 
        IStrategoTerm m_11 = null;
        IStrategoTerm n_11 = null;
        IStrategoTerm o_11 = null;
        o_11 = term;
        Success50:
        { 
          Fail74:
          { 
            IStrategoTerm q_11 = null;
            q_11 = term;
            term = l_11;
            if(term.getTermType() != IStrategoTerm.LIST || !((IStrategoList)term).isEmpty())
              break Fail74;
            term = q_11;
            if(true)
              break Success50;
          }
          term = l_11;
          if(term.getTermType() != IStrategoTerm.LIST || ((IStrategoList)term).isEmpty())
            break Fail73;
          n_11 = ((IStrategoList)term).head();
          m_11 = ((IStrategoList)term).tail();
          term = this.invoke(context, o_11, m_11);
          if(term == null)
            break Fail73;
          term = termFactory.makeAppl(Image_matrix._consIfElse_3, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consEqu_2, new IStrategoTerm[]{Image_matrix.constVar0, n_11}), o_11, term});
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Fix$Loop1$No$Index_0_0 extends Strategy 
  { 
    public static $Fix$Loop1$No$Index_0_0 instance = new $Fix$Loop1$No$Index_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      Fail75:
      { 
        IStrategoTerm y_11 = null;
        if(term.getTermType() != IStrategoTerm.APPL || Image_matrix._consApplyLoop_6 != ((IStrategoAppl)term).getConstructor())
          break Fail75;
        IStrategoTerm arg4 = term.getSubterm(1);
        if(arg4.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg4).getConstructor())
          break Fail75;
        IStrategoTerm arg5 = term.getSubterm(2);
        if(arg5.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg5).getConstructor())
          break Fail75;
        IStrategoTerm arg6 = term.getSubterm(3);
        if(arg6.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg6).getConstructor())
          break Fail75;
        IStrategoTerm arg7 = term.getSubterm(4);
        if(arg7.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg7).getConstructor())
          break Fail75;
        y_11 = term.getSubterm(5);
        term = termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constInt1, Image_matrix.constSub0, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constInt1, Image_matrix.constSub1, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(Image_matrix.constAssert1, termFactory.makeListCons(Image_matrix.constAssert0, termFactory.makeListCons(y_11, (IStrategoList)Image_matrix.constNil0)))})}), (IStrategoList)Image_matrix.constNil0)})});
        if(true)
          return term;
      }
      context.push("FixLoop1NoIndex_0_0");
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Fix$Loop$Single$Pixel_0_0 extends Strategy 
  { 
    public static $Fix$Loop$Single$Pixel_0_0 instance = new $Fix$Loop$Single$Pixel_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("FixLoopSinglePixel_0_0");
      Fail76:
      { 
        IStrategoTerm term56 = term;
        IStrategoConstructor cons0 = term.getTermType() == IStrategoTerm.APPL ? ((IStrategoAppl)term).getConstructor() : null;
        Success51:
        { 
          if(cons0 == Image_matrix._consApplyLoop_6)
          { 
            Fail77:
            { 
              IStrategoTerm c_12 = null;
              IStrategoTerm arg8 = term.getSubterm(0);
              if(arg8.getTermType() != IStrategoTerm.APPL || Image_matrix._consIndex_0 != ((IStrategoAppl)arg8).getConstructor())
                break Fail77;
              IStrategoTerm arg9 = term.getSubterm(1);
              if(arg9.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg9).getConstructor())
                break Fail77;
              IStrategoTerm arg10 = arg9.getSubterm(0);
              if(arg10.getTermType() != IStrategoTerm.STRING || !"0".equals(((IStrategoString)arg10).stringValue()))
                break Fail77;
              IStrategoTerm arg11 = term.getSubterm(2);
              if(arg11.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg11).getConstructor())
                break Fail77;
              IStrategoTerm arg12 = arg11.getSubterm(0);
              if(arg12.getTermType() != IStrategoTerm.STRING || !"0".equals(((IStrategoString)arg12).stringValue()))
                break Fail77;
              IStrategoTerm arg13 = term.getSubterm(3);
              if(arg13.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg13).getConstructor())
                break Fail77;
              IStrategoTerm arg14 = arg13.getSubterm(0);
              if(arg14.getTermType() != IStrategoTerm.STRING || !"0".equals(((IStrategoString)arg14).stringValue()))
                break Fail77;
              IStrategoTerm arg15 = term.getSubterm(4);
              if(arg15.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg15).getConstructor())
                break Fail77;
              IStrategoTerm arg16 = arg15.getSubterm(0);
              if(arg16.getTermType() != IStrategoTerm.STRING || !"0".equals(((IStrategoString)arg16).stringValue()))
                break Fail77;
              c_12 = term.getSubterm(5);
              term = fix_windows_index_0_0.instance.invoke(context, c_12);
              if(term == null)
                break Fail77;
              term = termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(Image_matrix.constAssign0, termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consCFor_4, new IStrategoTerm[]{Image_matrix.constCAssign0, Image_matrix.constLt0, Image_matrix.constCAssign1, term}), (IStrategoList)Image_matrix.constNil0))});
              if(true)
                break Success51;
            }
            term = term56;
          }
          if(cons0 == Image_matrix._consApplyLoop_6)
          { 
            IStrategoTerm z_11 = null;
            IStrategoTerm arg17 = term.getSubterm(0);
            if(arg17.getTermType() != IStrategoTerm.APPL || Image_matrix._consRowColumn_0 != ((IStrategoAppl)arg17).getConstructor())
              break Fail76;
            IStrategoTerm arg18 = term.getSubterm(1);
            if(arg18.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg18).getConstructor())
              break Fail76;
            IStrategoTerm arg19 = arg18.getSubterm(0);
            if(arg19.getTermType() != IStrategoTerm.STRING || !"0".equals(((IStrategoString)arg19).stringValue()))
              break Fail76;
            IStrategoTerm arg20 = term.getSubterm(2);
            if(arg20.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg20).getConstructor())
              break Fail76;
            IStrategoTerm arg21 = arg20.getSubterm(0);
            if(arg21.getTermType() != IStrategoTerm.STRING || !"0".equals(((IStrategoString)arg21).stringValue()))
              break Fail76;
            IStrategoTerm arg22 = term.getSubterm(3);
            if(arg22.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg22).getConstructor())
              break Fail76;
            IStrategoTerm arg23 = arg22.getSubterm(0);
            if(arg23.getTermType() != IStrategoTerm.STRING || !"0".equals(((IStrategoString)arg23).stringValue()))
              break Fail76;
            IStrategoTerm arg24 = term.getSubterm(4);
            if(arg24.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg24).getConstructor())
              break Fail76;
            IStrategoTerm arg25 = arg24.getSubterm(0);
            if(arg25.getTermType() != IStrategoTerm.STRING || !"0".equals(((IStrategoString)arg25).stringValue()))
              break Fail76;
            z_11 = term.getSubterm(5);
            term = fix_windows_noindex_0_0.instance.invoke(context, z_11);
            if(term == null)
              break Fail76;
            term = termFactory.makeAppl(Image_matrix._consCFor_4, new IStrategoTerm[]{Image_matrix.constCAssign2, Image_matrix.constLt1, Image_matrix.constCAssign3, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consCFor_4, new IStrategoTerm[]{Image_matrix.constComma0, Image_matrix.constLt2, Image_matrix.constComma1, term}), (IStrategoList)Image_matrix.constNil0)})});
          }
          else
          { 
            break Fail76;
          }
        }
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Fix$Loop2$Index_0_0 extends Strategy 
  { 
    public static $Fix$Loop2$Index_0_0 instance = new $Fix$Loop2$Index_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("FixLoop2Index_0_0");
      Fail78:
      { 
        IStrategoTerm g_12 = null;
        IStrategoTerm h_12 = null;
        IStrategoTerm i_12 = null;
        IStrategoTerm j_12 = null;
        IStrategoTerm k_12 = null;
        if(term.getTermType() != IStrategoTerm.APPL || Image_matrix._consApplyLoop_6 != ((IStrategoAppl)term).getConstructor())
          break Fail78;
        IStrategoTerm arg26 = term.getSubterm(1);
        if(arg26.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg26).getConstructor())
          break Fail78;
        h_12 = arg26.getSubterm(0);
        IStrategoTerm arg27 = term.getSubterm(2);
        if(arg27.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg27).getConstructor())
          break Fail78;
        i_12 = arg27.getSubterm(0);
        IStrategoTerm arg28 = term.getSubterm(3);
        if(arg28.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg28).getConstructor())
          break Fail78;
        j_12 = arg28.getSubterm(0);
        IStrategoTerm arg29 = term.getSubterm(4);
        if(arg29.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg29).getConstructor())
          break Fail78;
        k_12 = arg29.getSubterm(0);
        g_12 = term.getSubterm(5);
        term = (IStrategoTerm)termFactory.makeListCons(Image_matrix.const70, termFactory.makeListCons(h_12, termFactory.makeListCons(i_12, termFactory.makeListCons(j_12, termFactory.makeListCons(k_12, (IStrategoList)Image_matrix.constNil0)))));
        term = debug_0_0.instance.invoke(context, term);
        if(term == null)
          break Fail78;
        term = termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(Image_matrix.constAssign3, termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constInt1, Image_matrix.constSub0, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consCFor_4, new IStrategoTerm[]{Image_matrix.constCAssign4, Image_matrix.constLeq0, Image_matrix.constNone0, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(Image_matrix.constAssert0, termFactory.makeListCons(Image_matrix.constAssert1, termFactory.makeListCons(g_12, termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consIfElse_3, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAnd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAnd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consEqu_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{j_12})}), Image_matrix.constInt2})}), termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{h_12})})})}), termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{i_12})})})}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssign_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constAdd4, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{k_12})}), termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{j_12})}), Image_matrix.constInt2})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssign_2, new IStrategoTerm[]{Image_matrix.constVar3, termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constAdd3, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{k_12})}), termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{j_12})}), Image_matrix.constInt2})}), (IStrategoList)Image_matrix.constNil0))}), Image_matrix.constStatements0}), (IStrategoList)Image_matrix.constNil0))))})}), (IStrategoList)Image_matrix.constNil0)})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssign_2, new IStrategoTerm[]{Image_matrix.constVar3, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consMul_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{h_12})}), Image_matrix.constVar0}), termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{j_12})})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{h_12})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{i_12})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{j_12})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{k_12})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(g_12, (IStrategoList)Image_matrix.constCons31)})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssign_2, new IStrategoTerm[]{Image_matrix.constVar3, termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar3, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{h_12})}), termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{i_12})})}), (IStrategoList)Image_matrix.constNil0))})}), (IStrategoList)Image_matrix.constNil0))))});
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Fix$Loop2$No$Index_0_0 extends Strategy 
  { 
    public static $Fix$Loop2$No$Index_0_0 instance = new $Fix$Loop2$No$Index_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("FixLoop2NoIndex_0_0");
      Fail79:
      { 
        IStrategoTerm n_12 = null;
        IStrategoTerm o_12 = null;
        IStrategoTerm p_12 = null;
        IStrategoTerm q_12 = null;
        IStrategoTerm r_12 = null;
        if(term.getTermType() != IStrategoTerm.APPL || Image_matrix._consApplyLoop_6 != ((IStrategoAppl)term).getConstructor())
          break Fail79;
        IStrategoTerm arg30 = term.getSubterm(1);
        if(arg30.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg30).getConstructor())
          break Fail79;
        o_12 = arg30.getSubterm(0);
        IStrategoTerm arg31 = term.getSubterm(2);
        if(arg31.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg31).getConstructor())
          break Fail79;
        p_12 = arg31.getSubterm(0);
        IStrategoTerm arg32 = term.getSubterm(3);
        if(arg32.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg32).getConstructor())
          break Fail79;
        q_12 = arg32.getSubterm(0);
        IStrategoTerm arg33 = term.getSubterm(4);
        if(arg33.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg33).getConstructor())
          break Fail79;
        r_12 = arg33.getSubterm(0);
        n_12 = term.getSubterm(5);
        term = (IStrategoTerm)termFactory.makeListCons(Image_matrix.const70, termFactory.makeListCons(o_12, termFactory.makeListCons(p_12, termFactory.makeListCons(q_12, termFactory.makeListCons(r_12, (IStrategoList)Image_matrix.constNil0)))));
        term = debug_0_0.instance.invoke(context, term);
        if(term == null)
          break Fail79;
        term = termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constInt1, Image_matrix.constSub0, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consCFor_4, new IStrategoTerm[]{Image_matrix.constCAssign4, Image_matrix.constLeq0, Image_matrix.constNone0, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(Image_matrix.constAssert0, termFactory.makeListCons(Image_matrix.constAssert1, termFactory.makeListCons(n_12, termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consIfElse_3, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAnd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAnd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consEqu_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{q_12})}), Image_matrix.constInt2})}), termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{o_12})})})}), termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{p_12})})})}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssign_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constAdd4, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{r_12})}), termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{q_12})}), Image_matrix.constInt2})}), (IStrategoList)Image_matrix.constNil0)}), Image_matrix.constStatements1}), (IStrategoList)Image_matrix.constNil0))))})}), (IStrategoList)Image_matrix.constNil0)})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{o_12})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{p_12})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{q_12})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{r_12})}), Image_matrix.constInt2}), n_12}), (IStrategoList)Image_matrix.constNil0)})}), (IStrategoList)Image_matrix.constNil0))});
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Fix$Loop10$Raster$Index_0_0 extends Strategy 
  { 
    public static $Fix$Loop10$Raster$Index_0_0 instance = new $Fix$Loop10$Raster$Index_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("FixLoop10RasterIndex_0_0");
      Fail80:
      { 
        TermReference i_13 = new TermReference();
        TermReference j_13 = new TermReference();
        TermReference k_13 = new TermReference();
        TermReference l_13 = new TermReference();
        TermReference m_13 = new TermReference();
        TermReference n_13 = new TermReference();
        if(term.getTermType() != IStrategoTerm.APPL || Image_matrix._consApplyLoop_6 != ((IStrategoAppl)term).getConstructor())
          break Fail80;
        IStrategoTerm arg34 = term.getSubterm(1);
        if(arg34.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg34).getConstructor())
          break Fail80;
        if(j_13.value == null)
          j_13.value = arg34.getSubterm(0);
        else
          if(j_13.value != arg34.getSubterm(0) && !j_13.value.match(arg34.getSubterm(0)))
            break Fail80;
        IStrategoTerm arg35 = term.getSubterm(2);
        if(arg35.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg35).getConstructor())
          break Fail80;
        if(k_13.value == null)
          k_13.value = arg35.getSubterm(0);
        else
          if(k_13.value != arg35.getSubterm(0) && !k_13.value.match(arg35.getSubterm(0)))
            break Fail80;
        IStrategoTerm arg36 = term.getSubterm(3);
        if(arg36.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg36).getConstructor())
          break Fail80;
        if(l_13.value == null)
          l_13.value = arg36.getSubterm(0);
        else
          if(l_13.value != arg36.getSubterm(0) && !l_13.value.match(arg36.getSubterm(0)))
            break Fail80;
        IStrategoTerm arg37 = term.getSubterm(4);
        if(arg37.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg37).getConstructor())
          break Fail80;
        if(m_13.value == null)
          m_13.value = arg37.getSubterm(0);
        else
          if(m_13.value != arg37.getSubterm(0) && !m_13.value.match(arg37.getSubterm(0)))
            break Fail80;
        if(i_13.value == null)
          i_13.value = term.getSubterm(5);
        else
          if(i_13.value != term.getSubterm(5) && !i_13.value.match(term.getSubterm(5)))
            break Fail80;
        if(n_13.value == null)
          n_13.value = term;
        else
          if(n_13.value != term && !n_13.value.match(term))
            break Fail80;
        if(j_13.value == null || (k_13.value == null || (l_13.value == null || m_13.value == null)))
          break Fail80;
        term = (IStrategoTerm)termFactory.makeListCons(Image_matrix.const70, termFactory.makeListCons(j_13.value, termFactory.makeListCons(k_13.value, termFactory.makeListCons(l_13.value, termFactory.makeListCons(m_13.value, (IStrategoList)Image_matrix.constNil0)))));
        term = debug_0_0.instance.invoke(context, term);
        if(term == null)
          break Fail80;
        $Fix$Loop10$Raster$Index_0_0_fragment_0 $Fix$Loop10$Raster$Index_0_0_fragment_00 = new $Fix$Loop10$Raster$Index_0_0_fragment_0();
        $Fix$Loop10$Raster$Index_0_0_fragment_00.n_13 = n_13;
        $Fix$Loop10$Raster$Index_0_0_fragment_00.k_13 = k_13;
        $Fix$Loop10$Raster$Index_0_0_fragment_00.j_13 = j_13;
        $Fix$Loop10$Raster$Index_0_0_fragment_00.m_13 = m_13;
        $Fix$Loop10$Raster$Index_0_0_fragment_00.l_13 = l_13;
        $Fix$Loop10$Raster$Index_0_0_fragment_00.i_13 = i_13;
        term = $Fix$Loop10$Raster$Index_0_0_fragment_00.invoke(context, term);
        if(term == null)
          break Fail80;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Fix$Loop10$Raster$No$Index_0_0 extends Strategy 
  { 
    public static $Fix$Loop10$Raster$No$Index_0_0 instance = new $Fix$Loop10$Raster$No$Index_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("FixLoop10RasterNoIndex_0_0");
      Fail81:
      { 
        IStrategoTerm p_13 = null;
        IStrategoTerm q_13 = null;
        IStrategoTerm r_13 = null;
        IStrategoTerm s_13 = null;
        IStrategoTerm t_13 = null;
        if(term.getTermType() != IStrategoTerm.APPL || Image_matrix._consApplyLoop_6 != ((IStrategoAppl)term).getConstructor())
          break Fail81;
        IStrategoTerm arg38 = term.getSubterm(1);
        if(arg38.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg38).getConstructor())
          break Fail81;
        q_13 = arg38.getSubterm(0);
        IStrategoTerm arg39 = term.getSubterm(2);
        if(arg39.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg39).getConstructor())
          break Fail81;
        r_13 = arg39.getSubterm(0);
        IStrategoTerm arg40 = term.getSubterm(3);
        if(arg40.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg40).getConstructor())
          break Fail81;
        s_13 = arg40.getSubterm(0);
        IStrategoTerm arg41 = term.getSubterm(4);
        if(arg41.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg41).getConstructor())
          break Fail81;
        t_13 = arg41.getSubterm(0);
        p_13 = term.getSubterm(5);
        term = (IStrategoTerm)termFactory.makeListCons(Image_matrix.const70, termFactory.makeListCons(q_13, termFactory.makeListCons(r_13, termFactory.makeListCons(s_13, termFactory.makeListCons(t_13, (IStrategoList)Image_matrix.constNil0)))));
        term = debug_0_0.instance.invoke(context, term);
        if(term == null)
          break Fail81;
        term = termFactory.makeAppl(Image_matrix._consIfElse_3, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAnd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGt_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{t_13}), termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{s_13})})}), termFactory.makeAppl(Image_matrix._consGt_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{r_13}), termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{q_13})})})}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constInt1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{q_13})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{r_13})})})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constInt1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{s_13})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{t_13})})})}), termFactory.makeListCons(p_13, (IStrategoList)Image_matrix.constNil0))})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{s_13})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{t_13})}), Image_matrix.constInt2}), p_13}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{t_13})}), Image_matrix.constSub1, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{s_13})})})}), termFactory.makeListCons(p_13, (IStrategoList)Image_matrix.constNil0))})}), (IStrategoList)Image_matrix.constNil0))))})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{q_13})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{r_13})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constInt1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{s_13})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{t_13})})})}), termFactory.makeListCons(p_13, (IStrategoList)Image_matrix.constNil0))})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{s_13})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{t_13})}), Image_matrix.constInt2}), p_13}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{t_13})}), Image_matrix.constSub1, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{s_13})})})}), termFactory.makeListCons(p_13, (IStrategoList)Image_matrix.constNil0))})}), (IStrategoList)Image_matrix.constNil0)))})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{r_13})}), Image_matrix.constSub0, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{q_13})})})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constInt1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{s_13})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{t_13})})})}), termFactory.makeListCons(p_13, (IStrategoList)Image_matrix.constNil0))})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{s_13})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{t_13})}), Image_matrix.constInt2}), p_13}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{t_13})}), Image_matrix.constSub1, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{s_13})})})}), termFactory.makeListCons(p_13, (IStrategoList)Image_matrix.constNil0))})}), (IStrategoList)Image_matrix.constNil0))))})}), (IStrategoList)Image_matrix.constNil0)))}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constInt1, Image_matrix.constSub0, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constInt1, Image_matrix.constSub1, p_13}), (IStrategoList)Image_matrix.constNil0)})}), (IStrategoList)Image_matrix.constNil0)})});
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Fix$Loop10$Block$No$Index_0_0 extends Strategy 
  { 
    public static $Fix$Loop10$Block$No$Index_0_0 instance = new $Fix$Loop10$Block$No$Index_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      context.push("FixLoop10BlockNoIndex_0_0");
      Fail82:
      { 
        TermReference w_13 = new TermReference();
        TermReference x_13 = new TermReference();
        TermReference y_13 = new TermReference();
        TermReference z_13 = new TermReference();
        TermReference a_14 = new TermReference();
        TermReference b_14 = new TermReference();
        if(term.getTermType() != IStrategoTerm.APPL || Image_matrix._consApplyLoop_6 != ((IStrategoAppl)term).getConstructor())
          break Fail82;
        IStrategoTerm arg42 = term.getSubterm(1);
        if(arg42.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg42).getConstructor())
          break Fail82;
        if(x_13.value == null)
          x_13.value = arg42.getSubterm(0);
        else
          if(x_13.value != arg42.getSubterm(0) && !x_13.value.match(arg42.getSubterm(0)))
            break Fail82;
        IStrategoTerm arg43 = term.getSubterm(2);
        if(arg43.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg43).getConstructor())
          break Fail82;
        if(y_13.value == null)
          y_13.value = arg43.getSubterm(0);
        else
          if(y_13.value != arg43.getSubterm(0) && !y_13.value.match(arg43.getSubterm(0)))
            break Fail82;
        IStrategoTerm arg44 = term.getSubterm(3);
        if(arg44.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg44).getConstructor())
          break Fail82;
        if(z_13.value == null)
          z_13.value = arg44.getSubterm(0);
        else
          if(z_13.value != arg44.getSubterm(0) && !z_13.value.match(arg44.getSubterm(0)))
            break Fail82;
        IStrategoTerm arg45 = term.getSubterm(4);
        if(arg45.getTermType() != IStrategoTerm.APPL || Image_matrix._consInt_1 != ((IStrategoAppl)arg45).getConstructor())
          break Fail82;
        if(a_14.value == null)
          a_14.value = arg45.getSubterm(0);
        else
          if(a_14.value != arg45.getSubterm(0) && !a_14.value.match(arg45.getSubterm(0)))
            break Fail82;
        if(w_13.value == null)
          w_13.value = term.getSubterm(5);
        else
          if(w_13.value != term.getSubterm(5) && !w_13.value.match(term.getSubterm(5)))
            break Fail82;
        if(b_14.value == null)
          b_14.value = term;
        else
          if(b_14.value != term && !b_14.value.match(term))
            break Fail82;
        if(x_13.value == null || (y_13.value == null || (z_13.value == null || a_14.value == null)))
          break Fail82;
        term = (IStrategoTerm)termFactory.makeListCons(Image_matrix.const70, termFactory.makeListCons(x_13.value, termFactory.makeListCons(y_13.value, termFactory.makeListCons(z_13.value, termFactory.makeListCons(a_14.value, (IStrategoList)Image_matrix.constNil0)))));
        term = debug_0_0.instance.invoke(context, term);
        if(term == null)
          break Fail82;
        $Fix$Loop10$Block$No$Index_0_0_fragment_0 $Fix$Loop10$Block$No$Index_0_0_fragment_00 = new $Fix$Loop10$Block$No$Index_0_0_fragment_0();
        $Fix$Loop10$Block$No$Index_0_0_fragment_00.b_14 = b_14;
        $Fix$Loop10$Block$No$Index_0_0_fragment_00.y_13 = y_13;
        $Fix$Loop10$Block$No$Index_0_0_fragment_00.x_13 = x_13;
        $Fix$Loop10$Block$No$Index_0_0_fragment_00.a_14 = a_14;
        $Fix$Loop10$Block$No$Index_0_0_fragment_00.z_13 = z_13;
        $Fix$Loop10$Block$No$Index_0_0_fragment_00.w_13 = w_13;
        term = $Fix$Loop10$Block$No$Index_0_0_fragment_00.invoke(context, term);
        if(term == null)
          break Fail82;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Fix$Defined_0_0 extends Strategy 
  { 
    public static $Fix$Defined_0_0 instance = new $Fix$Defined_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      Fail83:
      { 
        IStrategoTerm d_14 = null;
        IStrategoTerm e_14 = null;
        IStrategoTerm f_14 = null;
        IStrategoTerm g_14 = null;
        if(term.getTermType() != IStrategoTerm.APPL || Image_matrix._consDefined_3 != ((IStrategoAppl)term).getConstructor())
          break Fail83;
        IStrategoTerm arg46 = term.getSubterm(0);
        if(arg46.getTermType() != IStrategoTerm.APPL || Image_matrix._consVar_1 != ((IStrategoAppl)arg46).getConstructor())
          break Fail83;
        IStrategoTerm arg47 = term.getSubterm(1);
        if(arg47.getTermType() != IStrategoTerm.APPL || Image_matrix._consRange_2 != ((IStrategoAppl)arg47).getConstructor())
          break Fail83;
        d_14 = arg47.getSubterm(0);
        e_14 = arg47.getSubterm(1);
        IStrategoTerm arg48 = term.getSubterm(2);
        if(arg48.getTermType() != IStrategoTerm.APPL || Image_matrix._consRange_2 != ((IStrategoAppl)arg48).getConstructor())
          break Fail83;
        f_14 = arg48.getSubterm(0);
        g_14 = arg48.getSubterm(1);
        term = termFactory.makeAppl(Image_matrix._consAnd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAnd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAnd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{d_14})}), termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, e_14})})}), termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{f_14})})}), termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, g_14})})});
        if(true)
          return term;
      }
      context.push("FixDefined_0_0");
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Fix$Windows$Index_0_0 extends Strategy 
  { 
    public static $Fix$Windows$Index_0_0 instance = new $Fix$Windows$Index_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      Fail84:
      { 
        IStrategoTerm term57 = term;
        IStrategoConstructor cons1 = term.getTermType() == IStrategoTerm.APPL ? ((IStrategoAppl)term).getConstructor() : null;
        Success52:
        { 
          if(cons1 == Image_matrix._consWindowAccessScalar_3)
          { 
            Fail85:
            { 
              IStrategoTerm q_14 = null;
              q_14 = term.getSubterm(0);
              term = termFactory.makeAppl(Image_matrix._consSubscript_2, new IStrategoTerm[]{q_14, Image_matrix.constVar3});
              if(true)
                break Success52;
            }
            term = term57;
          }
          if(cons1 == Image_matrix._consWindowAccessElement_7)
          { 
            IStrategoTerm l_14 = null;
            IStrategoTerm m_14 = null;
            IStrategoTerm n_14 = null;
            l_14 = term.getSubterm(0);
            m_14 = term.getSubterm(1);
            n_14 = term.getSubterm(2);
            term = termFactory.makeAppl(Image_matrix._consSubscript_2, new IStrategoTerm[]{l_14, termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consMul_2, new IStrategoTerm[]{m_14, Image_matrix.constVar0}), Image_matrix.constVar3}), n_14})});
          }
          else
          { 
            break Fail84;
          }
        }
        if(true)
          return term;
      }
      context.push("FixWindowsIndex_0_0");
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Fix$Windows$Index$Border_0_0 extends Strategy 
  { 
    public static $Fix$Windows$Index$Border_0_0 instance = new $Fix$Windows$Index$Border_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      Fail86:
      { 
        IStrategoTerm v_14 = null;
        IStrategoTerm w_14 = null;
        IStrategoTerm x_14 = null;
        IStrategoTerm y_14 = null;
        if(term.getTermType() != IStrategoTerm.APPL || Image_matrix._consWindowAccessElement_7 != ((IStrategoAppl)term).getConstructor())
          break Fail86;
        v_14 = term.getSubterm(0);
        w_14 = term.getSubterm(1);
        x_14 = term.getSubterm(2);
        IStrategoTerm arg49 = term.getSubterm(5);
        if(arg49.getTermType() != IStrategoTerm.APPL || Image_matrix._consBorder_2 != ((IStrategoAppl)arg49).getConstructor())
          break Fail86;
        y_14 = arg49.getSubterm(1);
        term = termFactory.makeAppl(Image_matrix._consIfElseExp_3, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consDefined_3, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consVar_1, new IStrategoTerm[]{v_14}), termFactory.makeAppl(Image_matrix._consRange_2, new IStrategoTerm[]{w_14, w_14}), termFactory.makeAppl(Image_matrix._consRange_2, new IStrategoTerm[]{x_14, x_14})}), termFactory.makeAppl(Image_matrix._consSubscript_2, new IStrategoTerm[]{v_14, termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consMul_2, new IStrategoTerm[]{w_14, Image_matrix.constVar0}), Image_matrix.constVar3}), x_14})}), y_14});
        if(true)
          return term;
      }
      context.push("FixWindowsIndexBorder_0_0");
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Fix$Windows$No$Index_0_0 extends Strategy 
  { 
    public static $Fix$Windows$No$Index_0_0 instance = new $Fix$Windows$No$Index_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      Fail87:
      { 
        IStrategoTerm term58 = term;
        IStrategoConstructor cons2 = term.getTermType() == IStrategoTerm.APPL ? ((IStrategoAppl)term).getConstructor() : null;
        Success53:
        { 
          if(cons2 == Image_matrix._consWindowAccessScalar_3)
          { 
            Fail88:
            { 
              IStrategoTerm i_15 = null;
              i_15 = term.getSubterm(0);
              term = termFactory.makeAppl(Image_matrix._consSubscript_2, new IStrategoTerm[]{i_15, Image_matrix.constAdd5});
              if(true)
                break Success53;
            }
            term = term58;
          }
          if(cons2 == Image_matrix._consWindowAccessElement_7)
          { 
            IStrategoTerm d_15 = null;
            IStrategoTerm e_15 = null;
            IStrategoTerm f_15 = null;
            d_15 = term.getSubterm(0);
            e_15 = term.getSubterm(1);
            f_15 = term.getSubterm(2);
            term = termFactory.makeAppl(Image_matrix._consSubscript_2, new IStrategoTerm[]{d_15, termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consMul_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{Image_matrix.constVar5, e_15}), Image_matrix.constVar0}), Image_matrix.constVar4}), f_15})});
          }
          else
          { 
            break Fail87;
          }
        }
        if(true)
          return term;
      }
      context.push("FixWindowsNoIndex_0_0");
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Fix$Windows$No$Index$Border_0_0 extends Strategy 
  { 
    public static $Fix$Windows$No$Index$Border_0_0 instance = new $Fix$Windows$No$Index$Border_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      Fail89:
      { 
        IStrategoTerm n_15 = null;
        IStrategoTerm o_15 = null;
        IStrategoTerm p_15 = null;
        IStrategoTerm q_15 = null;
        if(term.getTermType() != IStrategoTerm.APPL || Image_matrix._consWindowAccessElement_7 != ((IStrategoAppl)term).getConstructor())
          break Fail89;
        n_15 = term.getSubterm(0);
        o_15 = term.getSubterm(1);
        p_15 = term.getSubterm(2);
        IStrategoTerm arg50 = term.getSubterm(5);
        if(arg50.getTermType() != IStrategoTerm.APPL || Image_matrix._consBorder_2 != ((IStrategoAppl)arg50).getConstructor())
          break Fail89;
        q_15 = arg50.getSubterm(1);
        term = termFactory.makeAppl(Image_matrix._consIfElseExp_3, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consDefined_3, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consVar_1, new IStrategoTerm[]{n_15}), termFactory.makeAppl(Image_matrix._consRange_2, new IStrategoTerm[]{o_15, o_15}), termFactory.makeAppl(Image_matrix._consRange_2, new IStrategoTerm[]{p_15, p_15})}), termFactory.makeAppl(Image_matrix._consSubscript_2, new IStrategoTerm[]{n_15, termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consMul_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAdd_2, new IStrategoTerm[]{Image_matrix.constVar5, o_15}), Image_matrix.constVar0}), Image_matrix.constVar4}), p_15})}), q_15});
        if(true)
          return term;
      }
      context.push("FixWindowsNoIndexBorder_0_0");
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class $Fix$Windows$Arg_0_0 extends Strategy 
  { 
    public static $Fix$Windows$Arg_0_0 instance = new $Fix$Windows$Arg_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      Fail90:
      { 
        IStrategoTerm term59 = term;
        IStrategoConstructor cons3 = term.getTermType() == IStrategoTerm.APPL ? ((IStrategoAppl)term).getConstructor() : null;
        Success54:
        { 
          if(cons3 == Image_matrix._consWindow_1)
          { 
            Fail91:
            { 
              IStrategoTerm u_15 = null;
              u_15 = term.getSubterm(0);
              term = termFactory.makeAppl(Image_matrix._consArray_2, new IStrategoTerm[]{Image_matrix.constCons34, u_15});
              if(true)
                break Success54;
            }
            term = term59;
          }
          if(cons3 == Image_matrix._consWindowArray_3)
          { 
            IStrategoTerm t_15 = null;
            t_15 = term.getSubterm(2);
            term = termFactory.makeAppl(Image_matrix._consArray_2, new IStrategoTerm[]{Image_matrix.constCons34, t_15});
          }
          else
          { 
            break Fail90;
          }
        }
        if(true)
          return term;
      }
      context.push("FixWindowsArg_0_0");
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") public static class main_0_0 extends Strategy 
  { 
    public static main_0_0 instance = new main_0_0();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      context.push("main_0_0");
      Fail92:
      { 
        term = io_$Image__matrix_0_0.instance.invoke(context, term);
        if(term == null)
          break Fail92;
        context.popOnSuccess();
        if(true)
          return term;
      }
      context.popOnFailure();
      return null;
    }
  }

  @SuppressWarnings("all") private static final class $Fix$Loop10$Block$No$Index_0_0_fragment_0 extends Strategy 
  { 
    TermReference b_14;

    TermReference y_13;

    TermReference x_13;

    TermReference a_14;

    TermReference z_13;

    TermReference w_13;

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      Fail93:
      { 
        if(b_14.value == null)
          break Fail93;
        term = b_14.value;
        if(y_13.value == null || (x_13.value == null || (a_14.value == null || (z_13.value == null || w_13.value == null))))
          break Fail93;
        term = termFactory.makeAppl(Image_matrix._consIfElse_3, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAnd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGt_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{a_14.value}), termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{z_13.value})})}), termFactory.makeAppl(Image_matrix._consGt_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{y_13.value}), termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{x_13.value})})})}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constInt1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{x_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{y_13.value})})})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constInt1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{z_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{a_14.value})})})}), termFactory.makeListCons(w_13.value, (IStrategoList)Image_matrix.constNil0))})}), (IStrategoList)Image_matrix.constNil0))})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constInt1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{x_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{y_13.value})})})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{z_13.value})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{a_14.value})}), Image_matrix.constInt2}), w_13.value}), (IStrategoList)Image_matrix.constNil0))})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constInt1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{x_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{y_13.value})})})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{a_14.value})}), Image_matrix.constSub1, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{z_13.value})})})}), termFactory.makeListCons(w_13.value, (IStrategoList)Image_matrix.constNil0))})}), (IStrategoList)Image_matrix.constNil0))})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{x_13.value})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{y_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constInt1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{z_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{a_14.value})})})}), termFactory.makeListCons(w_13.value, (IStrategoList)Image_matrix.constNil0))})}), (IStrategoList)Image_matrix.constNil0)})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{x_13.value})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{y_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{z_13.value})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{a_14.value})}), Image_matrix.constInt2}), w_13.value}), (IStrategoList)Image_matrix.constNil0)})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{x_13.value})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{y_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{a_14.value})}), Image_matrix.constSub1, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{z_13.value})})})}), termFactory.makeListCons(w_13.value, (IStrategoList)Image_matrix.constNil0))})}), (IStrategoList)Image_matrix.constNil0)})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{y_13.value})}), Image_matrix.constSub0, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{x_13.value})})})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constInt1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{z_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{a_14.value})})})}), termFactory.makeListCons(w_13.value, (IStrategoList)Image_matrix.constNil0))})}), (IStrategoList)Image_matrix.constNil0))})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{y_13.value})}), Image_matrix.constSub0, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{x_13.value})})})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{z_13.value})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{a_14.value})}), Image_matrix.constInt2}), w_13.value}), (IStrategoList)Image_matrix.constNil0))})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{y_13.value})}), Image_matrix.constSub0, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{x_13.value})})})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{a_14.value})}), Image_matrix.constSub1, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{z_13.value})})})}), termFactory.makeListCons(w_13.value, (IStrategoList)Image_matrix.constNil0))})}), (IStrategoList)Image_matrix.constNil0))})}), (IStrategoList)Image_matrix.constNil0)))))))))}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constInt1, Image_matrix.constSub0, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constInt1, Image_matrix.constSub1, w_13.value}), (IStrategoList)Image_matrix.constNil0)})}), (IStrategoList)Image_matrix.constNil0)})});
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class $Fix$Loop10$Raster$Index_0_0_fragment_0 extends Strategy 
  { 
    TermReference n_13;

    TermReference k_13;

    TermReference j_13;

    TermReference m_13;

    TermReference l_13;

    TermReference i_13;

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      ITermFactory termFactory = context.getFactory();
      Fail94:
      { 
        if(n_13.value == null)
          break Fail94;
        term = n_13.value;
        if(k_13.value == null || (j_13.value == null || (m_13.value == null || (l_13.value == null || i_13.value == null))))
          break Fail94;
        term = termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(Image_matrix.constAssign3, termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consIfElse_3, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consAnd_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGt_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{m_13.value}), termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{l_13.value})})}), termFactory.makeAppl(Image_matrix._consGt_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{k_13.value}), termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{j_13.value})})})}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constInt1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{j_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{k_13.value})})})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constInt1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{l_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{m_13.value})})})}), termFactory.makeListCons(i_13.value, (IStrategoList)Image_matrix.constCons31))})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{l_13.value})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{m_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(i_13.value, (IStrategoList)Image_matrix.constCons31)})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{m_13.value})}), Image_matrix.constSub1, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{l_13.value})})})}), termFactory.makeListCons(i_13.value, (IStrategoList)Image_matrix.constCons31))})}), (IStrategoList)Image_matrix.constNil0))))})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{j_13.value})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{k_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constInt1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{l_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{m_13.value})})})}), termFactory.makeListCons(i_13.value, (IStrategoList)Image_matrix.constCons31))})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{l_13.value})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{m_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(i_13.value, (IStrategoList)Image_matrix.constCons31)})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{m_13.value})}), Image_matrix.constSub1, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{l_13.value})})})}), termFactory.makeListCons(i_13.value, (IStrategoList)Image_matrix.constCons31))})}), (IStrategoList)Image_matrix.constNil0)))})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar1, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{k_13.value})}), Image_matrix.constSub0, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar5, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{j_13.value})})})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constInt1, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{l_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consLt_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{m_13.value})})})}), termFactory.makeListCons(i_13.value, (IStrategoList)Image_matrix.constCons31))})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{l_13.value})}), termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{m_13.value})}), Image_matrix.constInt2}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(i_13.value, (IStrategoList)Image_matrix.constCons31)})}), termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consSub_2, new IStrategoTerm[]{Image_matrix.constVar0, termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{m_13.value})}), Image_matrix.constSub1, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consAssert_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consGeq_2, new IStrategoTerm[]{Image_matrix.constVar4, termFactory.makeAppl(Image_matrix._consNeg_1, new IStrategoTerm[]{termFactory.makeAppl(Image_matrix._consInt_1, new IStrategoTerm[]{l_13.value})})})}), termFactory.makeListCons(i_13.value, (IStrategoList)Image_matrix.constCons31))})}), (IStrategoList)Image_matrix.constNil0))))})}), (IStrategoList)Image_matrix.constNil0)))}), termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar5, Image_matrix.constInt1, Image_matrix.constSub0, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(termFactory.makeAppl(Image_matrix._consFor_4, new IStrategoTerm[]{Image_matrix.constVar4, Image_matrix.constInt1, Image_matrix.constSub1, termFactory.makeAppl(Image_matrix._consStatements_1, new IStrategoTerm[]{(IStrategoTerm)termFactory.makeListCons(i_13.value, (IStrategoList)Image_matrix.constCons31)})}), (IStrategoList)Image_matrix.constNil0)})}), (IStrategoList)Image_matrix.constNil0)})}), (IStrategoList)Image_matrix.constNil0))});
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted137 extends Strategy 
  { 
    TermReference d_11;

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail95:
      { 
        term = fixed_width_cases_0_1.instance.invoke(context, term, d_11.value);
        if(term == null)
          break Fail95;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted135 extends Strategy 
  { 
    public static final lifted135 instance = new lifted135();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail96:
      { 
        term = try_1_0.instance.invoke(context, term, lifted136.instance);
        if(term == null)
          break Fail96;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted136 extends Strategy 
  { 
    public static final lifted136 instance = new lifted136();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail97:
      { 
        IStrategoTerm term53 = term;
        Success55:
        { 
          Fail98:
          { 
            term = $Fix$Windows$Index$Border_0_0.instance.invoke(context, term);
            if(term == null)
              break Fail98;
            if(true)
              break Success55;
          }
          term = term53;
          IStrategoTerm term54 = term;
          Success56:
          { 
            Fail99:
            { 
              term = $Fix$Windows$Index_0_0.instance.invoke(context, term);
              if(term == null)
                break Fail99;
              if(true)
                break Success56;
            }
            term = $Fix$Windows$Arg_0_0.instance.invoke(context, term54);
            if(term == null)
              break Fail97;
          }
        }
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted133 extends Strategy 
  { 
    public static final lifted133 instance = new lifted133();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail100:
      { 
        term = try_1_0.instance.invoke(context, term, lifted134.instance);
        if(term == null)
          break Fail100;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted134 extends Strategy 
  { 
    public static final lifted134 instance = new lifted134();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail101:
      { 
        IStrategoTerm term51 = term;
        Success57:
        { 
          Fail102:
          { 
            term = $Fix$Windows$No$Index$Border_0_0.instance.invoke(context, term);
            if(term == null)
              break Fail102;
            if(true)
              break Success57;
          }
          term = term51;
          IStrategoTerm term52 = term;
          Success58:
          { 
            Fail103:
            { 
              term = $Fix$Windows$No$Index_0_0.instance.invoke(context, term);
              if(term == null)
                break Fail103;
              if(true)
                break Success58;
            }
            term = $Fix$Windows$Arg_0_0.instance.invoke(context, term52);
            if(term == null)
              break Fail101;
          }
        }
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted131 extends Strategy 
  { 
    public static final lifted131 instance = new lifted131();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail104:
      { 
        term = try_1_0.instance.invoke(context, term, $Fix$Loop10$Raster$No$Index_0_0.instance);
        if(term == null)
          break Fail104;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted129 extends Strategy 
  { 
    public static final lifted129 instance = new lifted129();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail105:
      { 
        term = try_1_0.instance.invoke(context, term, $Fix$Loop10$Block$No$Index_0_0.instance);
        if(term == null)
          break Fail105;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted127 extends Strategy 
  { 
    public static final lifted127 instance = new lifted127();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail106:
      { 
        term = try_1_0.instance.invoke(context, term, $Fix$Loop10$Raster$Index_0_0.instance);
        if(term == null)
          break Fail106;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted125 extends Strategy 
  { 
    public static final lifted125 instance = new lifted125();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail107:
      { 
        term = try_1_0.instance.invoke(context, term, $Fix$Loop2$No$Index_0_0.instance);
        if(term == null)
          break Fail107;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted123 extends Strategy 
  { 
    public static final lifted123 instance = new lifted123();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail108:
      { 
        term = try_1_0.instance.invoke(context, term, $Fix$Loop2$Index_0_0.instance);
        if(term == null)
          break Fail108;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted121 extends Strategy 
  { 
    public static final lifted121 instance = new lifted121();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail109:
      { 
        term = try_1_0.instance.invoke(context, term, $Fix$Loop1$No$Index_0_0.instance);
        if(term == null)
          break Fail109;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted117 extends Strategy 
  { 
    public static final lifted117 instance = new lifted117();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail110:
      { 
        term = try_1_0.instance.invoke(context, term, $Fix$Defined_0_0.instance);
        if(term == null)
          break Fail110;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted114 extends Strategy 
  { 
    public static final lifted114 instance = new lifted114();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail111:
      { 
        IStrategoTerm term41 = term;
        Success59:
        { 
          Fail112:
          { 
            IStrategoTerm p_9 = null;
            p_9 = term;
            term = get_option_0_1.instance.invoke(context, p_9, Image_matrix.constLoop_nosingle0);
            if(term == null)
              break Fail112;
            { 
              if(true)
                break Fail111;
              if(true)
                break Success59;
            }
          }
          term = term41;
        }
        term = topdown_1_0.instance.invoke(context, term, lifted115.instance);
        if(term == null)
          break Fail111;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted115 extends Strategy 
  { 
    public static final lifted115 instance = new lifted115();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail113:
      { 
        term = try_1_0.instance.invoke(context, term, $Fix$Loop$Single$Pixel_0_0.instance);
        if(term == null)
          break Fail113;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted113 extends Strategy 
  { 
    public static final lifted113 instance = new lifted113();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail114:
      { 
        IStrategoTerm l_9 = null;
        IStrategoTerm n_9 = null;
        l_9 = term;
        term = get_option_0_1.instance.invoke(context, l_9, Image_matrix.constWidth_5120);
        if(term == null)
          break Fail114;
        n_9 = term;
        term = make_fixed_width_cases_0_1.instance.invoke(context, n_9, Image_matrix.constCons16);
        if(term == null)
          break Fail114;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted111 extends Strategy 
  { 
    public static final lifted111 instance = new lifted111();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail115:
      { 
        term = try_1_0.instance.invoke(context, term, declare_variables_0_0.instance);
        if(term == null)
          break Fail115;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted119 extends Strategy 
  { 
    public static final lifted119 instance = new lifted119();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail116:
      { 
        term = try_1_0.instance.invoke(context, term, $Fix$Defined_0_0.instance);
        if(term == null)
          break Fail116;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted107 extends Strategy 
  { 
    Strategy p_8;

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail117:
      { 
        lifted108 lifted1080 = new lifted108();
        lifted1080.p_8 = p_8;
        term = try_1_0.instance.invoke(context, term, lifted1080);
        if(term == null)
          break Fail117;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted108 extends Strategy 
  { 
    Strategy p_8;

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail118:
      { 
        term = topdownstopping_1_0.instance.invoke(context, term, p_8);
        if(term == null)
          break Fail118;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted106 extends Strategy 
  { 
    TermReference l_8;

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail119:
      { 
        if(l_8.value == null)
          break Fail119;
        term = rm_config_0_0.instance.invoke(context, l_8.value);
        if(term == null)
          break Fail119;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted105 extends Strategy 
  { 
    public static final lifted105 instance = new lifted105();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail120:
      { 
        IStrategoTerm x_7 = null;
        x_7 = term;
        term = get_option_0_1.instance.invoke(context, x_7, Image_matrix.constNo_use_apply_assertions0);
        if(term == null)
          break Fail120;
        term = rm_config_0_0.instance.invoke(context, Image_matrix.constUse_apply_assertions0);
        if(term == null)
          break Fail120;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted104 extends Strategy 
  { 
    public static final lifted104 instance = new lifted104();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail121:
      { 
        IStrategoTerm v_7 = null;
        v_7 = term;
        term = get_option_0_1.instance.invoke(context, v_7, Image_matrix.constNo_use_program_assertions0);
        if(term == null)
          break Fail121;
        term = rm_config_0_0.instance.invoke(context, Image_matrix.constUse_program_assertions0);
        if(term == null)
          break Fail121;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted103 extends Strategy 
  { 
    public static final lifted103 instance = new lifted103();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail122:
      { 
        IStrategoTerm t_7 = null;
        t_7 = term;
        term = get_option_0_1.instance.invoke(context, t_7, Image_matrix.constNo_generate_loop_assertions0);
        if(term == null)
          break Fail122;
        term = rm_config_0_0.instance.invoke(context, Image_matrix.constGenerate_loop_assertions0);
        if(term == null)
          break Fail122;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted102 extends Strategy 
  { 
    public static final lifted102 instance = new lifted102();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail123:
      { 
        IStrategoTerm r_7 = null;
        r_7 = term;
        term = get_option_0_1.instance.invoke(context, r_7, Image_matrix.constNo_generate_if_assertions0);
        if(term == null)
          break Fail123;
        term = rm_config_0_0.instance.invoke(context, Image_matrix.constGenerate_if_assertions0);
        if(term == null)
          break Fail123;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted101 extends Strategy 
  { 
    public static final lifted101 instance = new lifted101();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail124:
      { 
        IStrategoTerm p_7 = null;
        p_7 = term;
        term = get_option_0_1.instance.invoke(context, p_7, Image_matrix.constNo_normalise_expressions0);
        if(term == null)
          break Fail124;
        term = rm_config_0_0.instance.invoke(context, Image_matrix.constNormalise_expressions0);
        if(term == null)
          break Fail124;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted100 extends Strategy 
  { 
    public static final lifted100 instance = new lifted100();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail125:
      { 
        IStrategoTerm n_7 = null;
        n_7 = term;
        term = get_option_0_1.instance.invoke(context, n_7, Image_matrix.constNo_propagate_constant_assignments0);
        if(term == null)
          break Fail125;
        term = rm_config_0_0.instance.invoke(context, Image_matrix.constPropagate_constant_assignments0);
        if(term == null)
          break Fail125;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted99 extends Strategy 
  { 
    public static final lifted99 instance = new lifted99();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail126:
      { 
        IStrategoTerm l_7 = null;
        l_7 = term;
        term = get_option_0_1.instance.invoke(context, l_7, Image_matrix.constNo_evaluate_constant_expressions0);
        if(term == null)
          break Fail126;
        term = rm_config_0_0.instance.invoke(context, Image_matrix.constEvaluate_constant_expressions0);
        if(term == null)
          break Fail126;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted98 extends Strategy 
  { 
    public static final lifted98 instance = new lifted98();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail127:
      { 
        IStrategoTerm j_7 = null;
        j_7 = term;
        term = get_option_0_1.instance.invoke(context, j_7, Image_matrix.constOptimise_20);
        if(term == null)
          break Fail127;
        term = set_config_0_0.instance.invoke(context, Image_matrix.const29);
        if(term == null)
          break Fail127;
        term = set_config_0_0.instance.invoke(context, Image_matrix.const33);
        if(term == null)
          break Fail127;
        term = set_config_0_0.instance.invoke(context, Image_matrix.const31);
        if(term == null)
          break Fail127;
        term = set_config_0_0.instance.invoke(context, Image_matrix.const35);
        if(term == null)
          break Fail127;
        term = set_config_0_0.instance.invoke(context, Image_matrix.const37);
        if(term == null)
          break Fail127;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted97 extends Strategy 
  { 
    public static final lifted97 instance = new lifted97();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail128:
      { 
        IStrategoTerm h_7 = null;
        h_7 = term;
        term = get_option_0_1.instance.invoke(context, h_7, Image_matrix.constOptimise_10);
        if(term == null)
          break Fail128;
        term = set_config_0_0.instance.invoke(context, Image_matrix.const29);
        if(term == null)
          break Fail128;
        term = set_config_0_0.instance.invoke(context, Image_matrix.const33);
        if(term == null)
          break Fail128;
        term = set_config_0_0.instance.invoke(context, Image_matrix.const31);
        if(term == null)
          break Fail128;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted96 extends Strategy 
  { 
    public static final lifted96 instance = new lifted96();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail129:
      { 
        term = option_group_default_0_0.instance.invoke(context, Image_matrix.constCons15);
        if(term == null)
          break Fail129;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted95 extends Strategy 
  { 
    public static final lifted95 instance = new lifted95();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail130:
      { 
        term = mutually_exclusive_options_default_0_0.instance.invoke(context, Image_matrix.constCons12);
        if(term == null)
          break Fail130;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted94 extends Strategy 
  { 
    public static final lifted94 instance = new lifted94();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail131:
      { 
        term = mutually_exclusive_options_default_0_0.instance.invoke(context, Image_matrix.constCons9);
        if(term == null)
          break Fail131;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted93 extends Strategy 
  { 
    public static final lifted93 instance = new lifted93();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail132:
      { 
        term = mutually_exclusive_options_default_0_0.instance.invoke(context, Image_matrix.constCons5);
        if(term == null)
          break Fail132;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted91 extends Strategy 
  { 
    public static final lifted91 instance = new lifted91();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail133:
      { 
        IStrategoTerm f_7 = null;
        f_7 = term;
        term = get_option_0_1.instance.invoke(context, f_7, Image_matrix.constSimple0);
        if(term == null)
          break Fail133;
        term = try_1_0.instance.invoke(context, term, lifted92.instance);
        if(term == null)
          break Fail133;
        term = set_config_0_0.instance.invoke(context, Image_matrix.const5);
        if(term == null)
          break Fail133;
        term = set_config_0_0.instance.invoke(context, Image_matrix.const17);
        if(term == null)
          break Fail133;
        term = set_config_0_0.instance.invoke(context, Image_matrix.const11);
        if(term == null)
          break Fail133;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted92 extends Strategy 
  { 
    public static final lifted92 instance = new lifted92();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail134:
      { 
        term = option_group_default_0_0.instance.invoke(context, Image_matrix.constCons2);
        if(term == null)
          break Fail134;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted90 extends Strategy 
  { 
    public static final lifted90 instance = new lifted90();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail135:
      { 
        IStrategoTerm d_7 = null;
        d_7 = term;
        term = get_option_0_1.instance.invoke(context, d_7, Image_matrix.constTest0);
        if(term == null)
          break Fail135;
        term = set_config_0_0.instance.invoke(context, Image_matrix.const1);
        if(term == null)
          break Fail135;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted89 extends Strategy 
  { 
    public static final lifted89 instance = new lifted89();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail136:
      { 
        if(term.getTermType() != IStrategoTerm.LIST || !((IStrategoList)term).isEmpty())
          break Fail136;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted88 extends Strategy 
  { 
    public static final lifted88 instance = new lifted88();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail137:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const51);
        if(term == null)
          break Fail137;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted87 extends Strategy 
  { 
    public static final lifted87 instance = new lifted87();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail138:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--no-use-apply-assertions".equals(((IStrategoString)term).stringValue()))
          break Fail138;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted86 extends Strategy 
  { 
    public static final lifted86 instance = new lifted86();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail139:
      { 
        if(term.getTermType() != IStrategoTerm.LIST || !((IStrategoList)term).isEmpty())
          break Fail139;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted85 extends Strategy 
  { 
    public static final lifted85 instance = new lifted85();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail140:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const50);
        if(term == null)
          break Fail140;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted84 extends Strategy 
  { 
    public static final lifted84 instance = new lifted84();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail141:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--no-use-program-assertions".equals(((IStrategoString)term).stringValue()))
          break Fail141;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted83 extends Strategy 
  { 
    public static final lifted83 instance = new lifted83();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail142:
      { 
        if(term.getTermType() != IStrategoTerm.LIST || !((IStrategoList)term).isEmpty())
          break Fail142;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted82 extends Strategy 
  { 
    public static final lifted82 instance = new lifted82();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail143:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const49);
        if(term == null)
          break Fail143;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted81 extends Strategy 
  { 
    public static final lifted81 instance = new lifted81();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail144:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--no-generate-loop-assertions".equals(((IStrategoString)term).stringValue()))
          break Fail144;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted80 extends Strategy 
  { 
    public static final lifted80 instance = new lifted80();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail145:
      { 
        if(term.getTermType() != IStrategoTerm.LIST || !((IStrategoList)term).isEmpty())
          break Fail145;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted79 extends Strategy 
  { 
    public static final lifted79 instance = new lifted79();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail146:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const48);
        if(term == null)
          break Fail146;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted78 extends Strategy 
  { 
    public static final lifted78 instance = new lifted78();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail147:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--no-generate-if-assertions".equals(((IStrategoString)term).stringValue()))
          break Fail147;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted77 extends Strategy 
  { 
    public static final lifted77 instance = new lifted77();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail148:
      { 
        if(term.getTermType() != IStrategoTerm.LIST || !((IStrategoList)term).isEmpty())
          break Fail148;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted76 extends Strategy 
  { 
    public static final lifted76 instance = new lifted76();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail149:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const47);
        if(term == null)
          break Fail149;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted75 extends Strategy 
  { 
    public static final lifted75 instance = new lifted75();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail150:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--no-normalise-expressions".equals(((IStrategoString)term).stringValue()))
          break Fail150;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted74 extends Strategy 
  { 
    public static final lifted74 instance = new lifted74();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail151:
      { 
        if(term.getTermType() != IStrategoTerm.LIST || !((IStrategoList)term).isEmpty())
          break Fail151;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted73 extends Strategy 
  { 
    public static final lifted73 instance = new lifted73();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail152:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const46);
        if(term == null)
          break Fail152;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted72 extends Strategy 
  { 
    public static final lifted72 instance = new lifted72();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail153:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--no-propagate-constant-assignments".equals(((IStrategoString)term).stringValue()))
          break Fail153;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted71 extends Strategy 
  { 
    public static final lifted71 instance = new lifted71();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail154:
      { 
        if(term.getTermType() != IStrategoTerm.LIST || !((IStrategoList)term).isEmpty())
          break Fail154;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted70 extends Strategy 
  { 
    public static final lifted70 instance = new lifted70();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail155:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const45);
        if(term == null)
          break Fail155;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted69 extends Strategy 
  { 
    public static final lifted69 instance = new lifted69();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail156:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--no-evaluate-constant-expressions".equals(((IStrategoString)term).stringValue()))
          break Fail156;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted68 extends Strategy 
  { 
    public static final lifted68 instance = new lifted68();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail157:
      { 
        term = Image_matrix.const44;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted67 extends Strategy 
  { 
    public static final lifted67 instance = new lifted67();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail158:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const43);
        if(term == null)
          break Fail158;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted66 extends Strategy 
  { 
    public static final lifted66 instance = new lifted66();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail159:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--merge-complex-multiply".equals(((IStrategoString)term).stringValue()))
          break Fail159;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted65 extends Strategy 
  { 
    public static final lifted65 instance = new lifted65();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail160:
      { 
        term = Image_matrix.const42;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted64 extends Strategy 
  { 
    public static final lifted64 instance = new lifted64();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail161:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const41);
        if(term == null)
          break Fail161;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted63 extends Strategy 
  { 
    public static final lifted63 instance = new lifted63();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail162:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--use-apply-assertions".equals(((IStrategoString)term).stringValue()))
          break Fail162;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted62 extends Strategy 
  { 
    public static final lifted62 instance = new lifted62();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail163:
      { 
        term = Image_matrix.const40;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted61 extends Strategy 
  { 
    public static final lifted61 instance = new lifted61();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail164:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const39);
        if(term == null)
          break Fail164;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted60 extends Strategy 
  { 
    public static final lifted60 instance = new lifted60();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail165:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--use-program-assertions".equals(((IStrategoString)term).stringValue()))
          break Fail165;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted59 extends Strategy 
  { 
    public static final lifted59 instance = new lifted59();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail166:
      { 
        term = Image_matrix.const38;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted58 extends Strategy 
  { 
    public static final lifted58 instance = new lifted58();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail167:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const37);
        if(term == null)
          break Fail167;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted57 extends Strategy 
  { 
    public static final lifted57 instance = new lifted57();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail168:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--generate-loop-assertions".equals(((IStrategoString)term).stringValue()))
          break Fail168;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted56 extends Strategy 
  { 
    public static final lifted56 instance = new lifted56();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail169:
      { 
        term = Image_matrix.const36;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted55 extends Strategy 
  { 
    public static final lifted55 instance = new lifted55();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail170:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const35);
        if(term == null)
          break Fail170;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted54 extends Strategy 
  { 
    public static final lifted54 instance = new lifted54();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail171:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--generate-if-assertions".equals(((IStrategoString)term).stringValue()))
          break Fail171;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted53 extends Strategy 
  { 
    public static final lifted53 instance = new lifted53();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail172:
      { 
        term = Image_matrix.const34;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted52 extends Strategy 
  { 
    public static final lifted52 instance = new lifted52();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail173:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const33);
        if(term == null)
          break Fail173;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted51 extends Strategy 
  { 
    public static final lifted51 instance = new lifted51();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail174:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--propagate-constant-assignments".equals(((IStrategoString)term).stringValue()))
          break Fail174;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted50 extends Strategy 
  { 
    public static final lifted50 instance = new lifted50();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail175:
      { 
        term = Image_matrix.const32;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted49 extends Strategy 
  { 
    public static final lifted49 instance = new lifted49();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail176:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const31);
        if(term == null)
          break Fail176;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted48 extends Strategy 
  { 
    public static final lifted48 instance = new lifted48();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail177:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--normalise-expressions".equals(((IStrategoString)term).stringValue()))
          break Fail177;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted47 extends Strategy 
  { 
    public static final lifted47 instance = new lifted47();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail178:
      { 
        term = Image_matrix.const30;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted46 extends Strategy 
  { 
    public static final lifted46 instance = new lifted46();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail179:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const29);
        if(term == null)
          break Fail179;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted45 extends Strategy 
  { 
    public static final lifted45 instance = new lifted45();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail180:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--evaluate-constant-expressions".equals(((IStrategoString)term).stringValue()))
          break Fail180;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted44 extends Strategy 
  { 
    public static final lifted44 instance = new lifted44();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail181:
      { 
        term = Image_matrix.const28;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted43 extends Strategy 
  { 
    public static final lifted43 instance = new lifted43();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail182:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const27);
        if(term == null)
          break Fail182;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted42 extends Strategy 
  { 
    public static final lifted42 instance = new lifted42();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail183:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--optimise-2".equals(((IStrategoString)term).stringValue()))
          break Fail183;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted41 extends Strategy 
  { 
    public static final lifted41 instance = new lifted41();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail184:
      { 
        term = Image_matrix.const26;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted40 extends Strategy 
  { 
    public static final lifted40 instance = new lifted40();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail185:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const25);
        if(term == null)
          break Fail185;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted39 extends Strategy 
  { 
    public static final lifted39 instance = new lifted39();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail186:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--optimise-1".equals(((IStrategoString)term).stringValue()))
          break Fail186;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted38 extends Strategy 
  { 
    public static final lifted38 instance = new lifted38();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail187:
      { 
        term = Image_matrix.const24;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted37 extends Strategy 
  { 
    public static final lifted37 instance = new lifted37();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail188:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const23);
        if(term == null)
          break Fail188;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted36 extends Strategy 
  { 
    public static final lifted36 instance = new lifted36();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail189:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--optimise-0".equals(((IStrategoString)term).stringValue()))
          break Fail189;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted35 extends Strategy 
  { 
    public static final lifted35 instance = new lifted35();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail190:
      { 
        term = Image_matrix.const22;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted34 extends Strategy 
  { 
    public static final lifted34 instance = new lifted34();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail191:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const21);
        if(term == null)
          break Fail191;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted33 extends Strategy 
  { 
    public static final lifted33 instance = new lifted33();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail192:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--width-512".equals(((IStrategoString)term).stringValue()))
          break Fail192;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted32 extends Strategy 
  { 
    public static final lifted32 instance = new lifted32();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail193:
      { 
        term = Image_matrix.const20;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted31 extends Strategy 
  { 
    public static final lifted31 instance = new lifted31();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail194:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const19);
        if(term == null)
          break Fail194;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted30 extends Strategy 
  { 
    public static final lifted30 instance = new lifted30();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail195:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--loop-nosingle".equals(((IStrategoString)term).stringValue()))
          break Fail195;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted29 extends Strategy 
  { 
    public static final lifted29 instance = new lifted29();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail196:
      { 
        term = Image_matrix.const18;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted28 extends Strategy 
  { 
    public static final lifted28 instance = new lifted28();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail197:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const17);
        if(term == null)
          break Fail197;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted27 extends Strategy 
  { 
    public static final lifted27 instance = new lifted27();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail198:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--loop-raster".equals(((IStrategoString)term).stringValue()))
          break Fail198;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted26 extends Strategy 
  { 
    public static final lifted26 instance = new lifted26();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail199:
      { 
        term = Image_matrix.const16;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted25 extends Strategy 
  { 
    public static final lifted25 instance = new lifted25();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail200:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const15);
        if(term == null)
          break Fail200;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted24 extends Strategy 
  { 
    public static final lifted24 instance = new lifted24();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail201:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--loop-block".equals(((IStrategoString)term).stringValue()))
          break Fail201;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted23 extends Strategy 
  { 
    public static final lifted23 instance = new lifted23();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail202:
      { 
        term = Image_matrix.const14;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted22 extends Strategy 
  { 
    public static final lifted22 instance = new lifted22();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail203:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const13);
        if(term == null)
          break Fail203;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted21 extends Strategy 
  { 
    public static final lifted21 instance = new lifted21();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail204:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--loop-index".equals(((IStrategoString)term).stringValue()))
          break Fail204;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted20 extends Strategy 
  { 
    public static final lifted20 instance = new lifted20();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail205:
      { 
        term = Image_matrix.const12;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted19 extends Strategy 
  { 
    public static final lifted19 instance = new lifted19();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail206:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const11);
        if(term == null)
          break Fail206;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted18 extends Strategy 
  { 
    public static final lifted18 instance = new lifted18();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail207:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--loop-noindex".equals(((IStrategoString)term).stringValue()))
          break Fail207;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted17 extends Strategy 
  { 
    public static final lifted17 instance = new lifted17();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail208:
      { 
        term = Image_matrix.const10;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted16 extends Strategy 
  { 
    public static final lifted16 instance = new lifted16();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail209:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const9);
        if(term == null)
          break Fail209;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted15 extends Strategy 
  { 
    public static final lifted15 instance = new lifted15();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail210:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--loop-10".equals(((IStrategoString)term).stringValue()))
          break Fail210;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted14 extends Strategy 
  { 
    public static final lifted14 instance = new lifted14();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail211:
      { 
        term = Image_matrix.const8;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted13 extends Strategy 
  { 
    public static final lifted13 instance = new lifted13();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail212:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const7);
        if(term == null)
          break Fail212;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted12 extends Strategy 
  { 
    public static final lifted12 instance = new lifted12();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail213:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--loop-2".equals(((IStrategoString)term).stringValue()))
          break Fail213;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted11 extends Strategy 
  { 
    public static final lifted11 instance = new lifted11();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail214:
      { 
        term = Image_matrix.const6;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted10 extends Strategy 
  { 
    public static final lifted10 instance = new lifted10();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail215:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const5);
        if(term == null)
          break Fail215;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted9 extends Strategy 
  { 
    public static final lifted9 instance = new lifted9();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail216:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--loop-1".equals(((IStrategoString)term).stringValue()))
          break Fail216;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted8 extends Strategy 
  { 
    public static final lifted8 instance = new lifted8();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail217:
      { 
        term = Image_matrix.const4;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted7 extends Strategy 
  { 
    public static final lifted7 instance = new lifted7();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail218:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const3);
        if(term == null)
          break Fail218;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted6 extends Strategy 
  { 
    public static final lifted6 instance = new lifted6();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail219:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--test".equals(((IStrategoString)term).stringValue()))
          break Fail219;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted5 extends Strategy 
  { 
    public static final lifted5 instance = new lifted5();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail220:
      { 
        term = Image_matrix.const2;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted4 extends Strategy 
  { 
    public static final lifted4 instance = new lifted4();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail221:
      { 
        term = set_config_0_0.instance.invoke(context, Image_matrix.const1);
        if(term == null)
          break Fail221;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted3 extends Strategy 
  { 
    public static final lifted3 instance = new lifted3();

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail222:
      { 
        if(term.getTermType() != IStrategoTerm.STRING || !"--simple".equals(((IStrategoString)term).stringValue()))
          break Fail222;
        if(true)
          return term;
      }
      return null;
    }
  }

  @SuppressWarnings("all") private static final class lifted2 extends Strategy 
  { 
    Strategy z_6;

    @Override public IStrategoTerm invoke(Context context, IStrategoTerm term)
    { 
      Fail223:
      { 
        term = do_defaults_1_0.instance.invoke(context, term, z_6);
        if(term == null)
          break Fail223;
        if(true)
          return term;
      }
      return null;
    }
  }

  public static void registerInterop(org.spoofax.interpreter.core.IContext context, Context compiledContext)
  { 
    new InteropRegisterer().registerLazy(context, compiledContext, InteropRegisterer.class.getClassLoader());
  }

  @SuppressWarnings("unused") public static class InteropRegisterer extends org.strategoxt.lang.InteropRegisterer 
  { 
    @Override public void register(org.spoofax.interpreter.core.IContext context, Context compiledContext)
    { 
      register(context, compiledContext, context.getVarScope());
    }

    @Override public void registerLazy(org.spoofax.interpreter.core.IContext context, Context compiledContext, ClassLoader classLoader)
    { 
      registerLazy(context, compiledContext, classLoader, context.getVarScope());
    }

    private void register(org.spoofax.interpreter.core.IContext context, Context compiledContext, org.spoofax.interpreter.core.VarScope varScope)
    { 
      compiledContext.registerComponent("Image_matrix");
      Image_matrix.init(compiledContext);
      varScope.addSVar("get_option_0_1", new InteropSDefT(get_option_0_1.instance, context));
      varScope.addSVar("debug_options_0_0", new InteropSDefT(debug_options_0_0.instance, context));
      varScope.addSVar("options_io_wrap_1_0", new InteropSDefT(options_io_wrap_1_0.instance, context));
      varScope.addSVar("set_options_0_0", new InteropSDefT(set_options_0_0.instance, context));
      varScope.addSVar("do_defaults_1_0", new InteropSDefT(do_defaults_1_0.instance, context));
      varScope.addSVar("option_group_default_0_0", new InteropSDefT(option_group_default_0_0.instance, context));
      varScope.addSVar("option_group_default_last_0_0", new InteropSDefT(option_group_default_last_0_0.instance, context));
      varScope.addSVar("option_group_default_more_0_0", new InteropSDefT(option_group_default_more_0_0.instance, context));
      varScope.addSVar("mutually_exclusive_options_default_0_0", new InteropSDefT(mutually_exclusive_options_default_0_0.instance, context));
      varScope.addSVar("mutually_exclusive_options_default_last_0_0", new InteropSDefT(mutually_exclusive_options_default_last_0_0.instance, context));
      varScope.addSVar("mutually_exclusive_options_default_more_0_0", new InteropSDefT(mutually_exclusive_options_default_more_0_0.instance, context));
      varScope.addSVar("cancel_duplicates_0_1", new InteropSDefT(cancel_duplicates_0_1.instance, context));
      varScope.addSVar("topdownstopping_1_0", new InteropSDefT(topdownstopping_1_0.instance, context));
      varScope.addSVar("io_Image__matrix_0_0", new InteropSDefT(io_$Image__matrix_0_0.instance, context));
      varScope.addSVar("Apply__Image__matrix_0_0", new InteropSDefT($Apply__$Image__matrix_0_0.instance, context));
      varScope.addSVar("declare_variables_0_0", new InteropSDefT(declare_variables_0_0.instance, context));
      varScope.addSVar("generate_test_code_0_0", new InteropSDefT(generate_test_code_0_0.instance, context));
      varScope.addSVar("fix_loop_window_0_0", new InteropSDefT(fix_loop_window_0_0.instance, context));
      varScope.addSVar("fix_windows_0_0", new InteropSDefT(fix_windows_0_0.instance, context));
      varScope.addSVar("fix_windows_noindex_0_0", new InteropSDefT(fix_windows_noindex_0_0.instance, context));
      varScope.addSVar("fix_windows_index_0_0", new InteropSDefT(fix_windows_index_0_0.instance, context));
      varScope.addSVar("make_fixed_width_cases_0_1", new InteropSDefT(make_fixed_width_cases_0_1.instance, context));
      varScope.addSVar("fixed_width_cases_0_1", new InteropSDefT(fixed_width_cases_0_1.instance, context));
      varScope.addSVar("fixed_width_generate_0_1", new InteropSDefT(fixed_width_generate_0_1.instance, context));
      varScope.addSVar("FixLoop1NoIndex_0_0", new InteropSDefT($Fix$Loop1$No$Index_0_0.instance, context));
      varScope.addSVar("FixLoopSinglePixel_0_0", new InteropSDefT($Fix$Loop$Single$Pixel_0_0.instance, context));
      varScope.addSVar("FixLoop2Index_0_0", new InteropSDefT($Fix$Loop2$Index_0_0.instance, context));
      varScope.addSVar("FixLoop2NoIndex_0_0", new InteropSDefT($Fix$Loop2$No$Index_0_0.instance, context));
      varScope.addSVar("FixLoop10RasterIndex_0_0", new InteropSDefT($Fix$Loop10$Raster$Index_0_0.instance, context));
      varScope.addSVar("FixLoop10RasterNoIndex_0_0", new InteropSDefT($Fix$Loop10$Raster$No$Index_0_0.instance, context));
      varScope.addSVar("FixLoop10BlockNoIndex_0_0", new InteropSDefT($Fix$Loop10$Block$No$Index_0_0.instance, context));
      varScope.addSVar("FixDefined_0_0", new InteropSDefT($Fix$Defined_0_0.instance, context));
      varScope.addSVar("FixWindowsIndex_0_0", new InteropSDefT($Fix$Windows$Index_0_0.instance, context));
      varScope.addSVar("FixWindowsIndexBorder_0_0", new InteropSDefT($Fix$Windows$Index$Border_0_0.instance, context));
      varScope.addSVar("FixWindowsNoIndex_0_0", new InteropSDefT($Fix$Windows$No$Index_0_0.instance, context));
      varScope.addSVar("FixWindowsNoIndexBorder_0_0", new InteropSDefT($Fix$Windows$No$Index$Border_0_0.instance, context));
      varScope.addSVar("FixWindowsArg_0_0", new InteropSDefT($Fix$Windows$Arg_0_0.instance, context));
      varScope.addSVar("main_0_0", new InteropSDefT(main_0_0.instance, context));
    }

    private void registerLazy(org.spoofax.interpreter.core.IContext context, Context compiledContext, ClassLoader classLoader, org.spoofax.interpreter.core.VarScope varScope)
    { 
      compiledContext.registerComponent("Image_matrix");
      Image_matrix.init(compiledContext);
      varScope.addSVar("get_option_0_1", new InteropSDefT(classLoader, "Image_matrix$get_option_0_1", context));
      varScope.addSVar("debug_options_0_0", new InteropSDefT(classLoader, "Image_matrix$debug_options_0_0", context));
      varScope.addSVar("options_io_wrap_1_0", new InteropSDefT(classLoader, "Image_matrix$options_io_wrap_1_0", context));
      varScope.addSVar("set_options_0_0", new InteropSDefT(classLoader, "Image_matrix$set_options_0_0", context));
      varScope.addSVar("do_defaults_1_0", new InteropSDefT(classLoader, "Image_matrix$do_defaults_1_0", context));
      varScope.addSVar("option_group_default_0_0", new InteropSDefT(classLoader, "Image_matrix$option_group_default_0_0", context));
      varScope.addSVar("option_group_default_last_0_0", new InteropSDefT(classLoader, "Image_matrix$option_group_default_last_0_0", context));
      varScope.addSVar("option_group_default_more_0_0", new InteropSDefT(classLoader, "Image_matrix$option_group_default_more_0_0", context));
      varScope.addSVar("mutually_exclusive_options_default_0_0", new InteropSDefT(classLoader, "Image_matrix$mutually_exclusive_options_default_0_0", context));
      varScope.addSVar("mutually_exclusive_options_default_last_0_0", new InteropSDefT(classLoader, "Image_matrix$mutually_exclusive_options_default_last_0_0", context));
      varScope.addSVar("mutually_exclusive_options_default_more_0_0", new InteropSDefT(classLoader, "Image_matrix$mutually_exclusive_options_default_more_0_0", context));
      varScope.addSVar("cancel_duplicates_0_1", new InteropSDefT(classLoader, "Image_matrix$cancel_duplicates_0_1", context));
      varScope.addSVar("topdownstopping_1_0", new InteropSDefT(classLoader, "Image_matrix$topdownstopping_1_0", context));
      varScope.addSVar("io_Image__matrix_0_0", new InteropSDefT(classLoader, "Image_matrix$io_$Image__matrix_0_0", context));
      varScope.addSVar("Apply__Image__matrix_0_0", new InteropSDefT(classLoader, "Image_matrix$$Apply__$Image__matrix_0_0", context));
      varScope.addSVar("declare_variables_0_0", new InteropSDefT(classLoader, "Image_matrix$declare_variables_0_0", context));
      varScope.addSVar("generate_test_code_0_0", new InteropSDefT(classLoader, "Image_matrix$generate_test_code_0_0", context));
      varScope.addSVar("fix_loop_window_0_0", new InteropSDefT(classLoader, "Image_matrix$fix_loop_window_0_0", context));
      varScope.addSVar("fix_windows_0_0", new InteropSDefT(classLoader, "Image_matrix$fix_windows_0_0", context));
      varScope.addSVar("fix_windows_noindex_0_0", new InteropSDefT(classLoader, "Image_matrix$fix_windows_noindex_0_0", context));
      varScope.addSVar("fix_windows_index_0_0", new InteropSDefT(classLoader, "Image_matrix$fix_windows_index_0_0", context));
      varScope.addSVar("make_fixed_width_cases_0_1", new InteropSDefT(classLoader, "Image_matrix$make_fixed_width_cases_0_1", context));
      varScope.addSVar("fixed_width_cases_0_1", new InteropSDefT(classLoader, "Image_matrix$fixed_width_cases_0_1", context));
      varScope.addSVar("fixed_width_generate_0_1", new InteropSDefT(classLoader, "Image_matrix$fixed_width_generate_0_1", context));
      varScope.addSVar("FixLoop1NoIndex_0_0", new InteropSDefT(classLoader, "Image_matrix$$Fix$Loop1$No$Index_0_0", context));
      varScope.addSVar("FixLoopSinglePixel_0_0", new InteropSDefT(classLoader, "Image_matrix$$Fix$Loop$Single$Pixel_0_0", context));
      varScope.addSVar("FixLoop2Index_0_0", new InteropSDefT(classLoader, "Image_matrix$$Fix$Loop2$Index_0_0", context));
      varScope.addSVar("FixLoop2NoIndex_0_0", new InteropSDefT(classLoader, "Image_matrix$$Fix$Loop2$No$Index_0_0", context));
      varScope.addSVar("FixLoop10RasterIndex_0_0", new InteropSDefT(classLoader, "Image_matrix$$Fix$Loop10$Raster$Index_0_0", context));
      varScope.addSVar("FixLoop10RasterNoIndex_0_0", new InteropSDefT(classLoader, "Image_matrix$$Fix$Loop10$Raster$No$Index_0_0", context));
      varScope.addSVar("FixLoop10BlockNoIndex_0_0", new InteropSDefT(classLoader, "Image_matrix$$Fix$Loop10$Block$No$Index_0_0", context));
      varScope.addSVar("FixDefined_0_0", new InteropSDefT(classLoader, "Image_matrix$$Fix$Defined_0_0", context));
      varScope.addSVar("FixWindowsIndex_0_0", new InteropSDefT(classLoader, "Image_matrix$$Fix$Windows$Index_0_0", context));
      varScope.addSVar("FixWindowsIndexBorder_0_0", new InteropSDefT(classLoader, "Image_matrix$$Fix$Windows$Index$Border_0_0", context));
      varScope.addSVar("FixWindowsNoIndex_0_0", new InteropSDefT(classLoader, "Image_matrix$$Fix$Windows$No$Index_0_0", context));
      varScope.addSVar("FixWindowsNoIndexBorder_0_0", new InteropSDefT(classLoader, "Image_matrix$$Fix$Windows$No$Index$Border_0_0", context));
      varScope.addSVar("FixWindowsArg_0_0", new InteropSDefT(classLoader, "Image_matrix$$Fix$Windows$Arg_0_0", context));
      varScope.addSVar("main_0_0", new InteropSDefT(classLoader, "Image_matrix$main_0_0", context));
    }
  }
}